2009-11-08 6 views
1

나눠야 영숫자 (공백 포함) 및 영숫자가 아닌은 쉼표로 구분됩니다.PHP 정규 표현식을 대체 하시겠습니까?

나는이 함께 노력

...

$str = "This is [email protected]#$%^&"; 
preg_replace("/([a-z0-9_\s])([^a-z0-9_])/i", "$1, $2", $str); 

하지만이 결과를 가지고 ...

이,있다! @ # $으로 %^&

방법 이 결과를 얻기 위해 검색 패턴을 수정할 수 있습니까?

이있다! @ # $으로 %는^&

감사합니다.

답변

3

당신과 같이, 두 번째의 첫 번째 그룹의 모든 것을 부정해야 :

preg_replace("/([a-z0-9_\s])([^a-z0-9_\s])/i", "$1, $2", $str); 

그렇지 않으면, 그것뿐만 아니라 공간에 분할 것입니다.

+0

자신의 예를 들어 텍스트 일하는 것이 그 있지만, 아마 –

+0

죄송합니다,하지만 당신은 무엇을 의미합니까 다른 용도로 사용할 수 없습니다? 실패 할 곳을 몇 가지 예를 들려 줄 수 있습니까? –

0

아마 여러 번 반복해야 할 것입니다. 이 시도 : 분할을위한 정규식은 정적이기 때문에,

$preg = array("/([\w\s]+)/i", "/([\W\s]+)/i"): 
$replace = array("\\1, ", "\\1 "); 
$result = rtrim(preg_replace($preg, $replace, $input)); // rtrim to get rid of any excess spaces 
관련 문제