2011-01-05 2 views
1

저는 preg_replace - PHP를 처음 사용하고 이제 막 배우고 있습니다 ... 특정 문자를 변경하고 싶습니다. 이전 문자와 영문 문자가 영어 인 경우에만 변경하고 싶습니다. 타겟 문자는 단어의 일부이며 시작 또는 끝 문자가 아닙니다. 예를 들어 문자열의 중간에서 문자 교체

...

$string = "I am learn*ing *PHP today*"; 

나는이 문자열은 다음과 같은 변환하고자합니다.

$newString = "I am learn'ing *PHP today*"; 

답변

2
$string = "I am learn*ing *PHP today*"; 
$newString = preg_replace('/(\w)\*(\w)/', '$1\'$2', $string); 

// $newString = "I am learn'ing *PHP today* " 

이 (밑줄, 문자, 숫자) 단어 문자로 둘러싸인 별표 일치합니다. 당신은 단지 알파벳 문자를 수행 할 경우 수행 할 수 있습니다

preg_replace('/([a-zA-Z])\*([a-zA-Z])/', '$1\'$2', 'I am learn*ing *PHP today*'); 
+0

이것은 첫 번째 발생을 대체합니다. 어때? "나는 PHP를 * 배운다."와 같은 문자열은 어떨까요? – Chandu

+0

사이버 네이트가 틀립니다. 그것은 모든 발생을 대체합니다. – webbiedave

+0

OP의 예는 첫 번째 문자 만 바꾸기 때문에 첫 번째 문자 만 바꾸는 방법을 언급 할 가치가 있습니다. – marcog

-1

는 알파벳 문자를 교체하려면, 당신은 정규식 대소 문자를 구분하기 위해 문자 범위로 [AZ]를 사용하고, i 플래그를 사용해야합니다 . 별표는 정규 표현식에서 "0 번 이상 일치"를 의미하기 때문에 바꾸려는 문자는 별표이므로 별표를 백 슬래시로 이스케이프 처리해야합니다.

$newstring = preg_replace('/([a-z])\*([a-z])/i', "$1'$2", $string); 
-1

는 '/ (\) w * (\ w) /', '$ 1 \'$ 2 '(

.... $ 문자열 = preg_replace이다를 문자로 둘러싸인 asteric의 모든 차례 나오는 교체하려면, $ string);

이 asteric 시작하고 단어의 끝 문자입니다 asteric의 모든 차례 나오는 교체하려면 ....

$ 문자열 = preg_replace이다 ('/ * (\) + w * /', ' \ '$ 1 \' ', $ string);