2013-06-14 2 views
2

안녕 지원 문자열에서 "."과 같습니다.PHP 모든 언어에 대한 모든 영숫자가 아닌 문자를 대체 내가 실제로이 같은 문자열에서 모든 영숫자가 아닌 문자를 교체하려고 해요

두 번째 난이 방법으로 모든 사용자의 언어에 대한 multybite 지원을 추가하고 싶습니다.

어떻게 할 수 있습니까?

appriciated 어떤 도움 덕분에 많은. 그것은 -.를 교체해야

+0

마침표를 캐릭터 목록에 추가하기 만하면됩니다.^a-z0-9 \ s. --- "멀티 바이트 지원 추가"에 관해서는, 악센트 등을 바꾸는 것을 의미하는 경우, é => e와 같은 거대한 배열을 만드는 것 외에는 다른 방법을 안다. 그리고 그것을 strtr에 사용한다. – Ariane

+0

@Ariane 괜찮습니까? 나는 이미 기간이 있다는 것을 의미한다!? 펄 호환 정규 표현식 ('preg') 확장 정규 표현식 ('ereg')보다 더 강력 : – sbaaaang

답변

6

을 다음

preg_replace('/[^\p{L}0-9\s]+/u', '-', $string); 

u 플래그가 사용되는 경우 정규 표현식 \p{L} (및 \p{Letter})은 유니 코드 문자 범주의 모든 문자와 일치합니다.

+0

OMG의 친구는 내가 대신 preg_replace이다()를 사용한다 F.J – sbaaaang

+0

@ mb_ereg_replace() 미안 업데이트 된 질문을 사용? : P – sbaaaang

+1

죄송합니다.'mb_ereg_replace()'에 대해 많이 모르지만'preg_replace()'가 작동해야 전환이 확실히 옵션이됩니다. –

1

, 당신은 아마 처음에 데이터를 혼합하고 있습니다.

멀티 바이트 지원에 관해서는, u 수정을 추가하고, 즉 \p{Letter}, PCRE properties 조사 : 시도

$replaced = preg_replace('~[^0-9\p{Letter}]+~iu', '-', $string); 
+0

세상에 임마 내가 mb_ereg_replace() 미안 업데이트 질문 @Alix 악셀 – sbaaaang

+0

@badbetonbreakbutbedbackbone을 사용), 더 악센트를 위해 중요하지 않습니다. –

+0

대단히 고마워 !! – sbaaaang

0

이 표현은 점을 대체합니다. 멀티 바이트의 경우 u 수정 자 (UTF-8)를 사용하십시오. ,

$result = preg_replace('~\P{Xan}++~u', '-', $string); 

\p{Xan} 모든 언어에서 숫자와 문자를 포함하여 \P{Xan} 그 모든 편지 또는 숫자가 아닌 포함

+0

OMG의 친구는 내가 – sbaaaang

1

가장 짧은 방법입니다.

+0

감사 @Ziarno() 미안 업데이트 질문하지만 (mb_ereg_replace에 대해) 그렇지 더 mb_ereg_replace를 사용? preg_replace()로 전환해야하는지, 왜 그러는지 말해 줄 수 있습니까? : P – sbaaaang

+1

@badbetonbreakbutbedbackbone : 아니요. 끝에있는 u 수정자는 패턴이 preg_ * 함수를 사용하여 유니 코드를 처리 할 수있게합니다. IMHO, mb_ereg 함수가 사라집니다. preg_ * 함수는 더 빠르며 유니 코드를 지원합니다. –

+0

감사합니다. 나는 그것을 테스트하고 있습니다;) – sbaaaang

관련 문제