2011-12-03 4 views
1

나는 문자열이 "ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ"ㅋ "ㅋ ㅋ ㅋ ㅋ"를, 나는«ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ«ㅋ»ㅋ ㅋ ㅋ ㅋ»나는이 스크립트를 사용하려고했다큰 따옴표를 바꾸는 방법은 무엇입니까?

을이 문자열에 따옴표를 교체해야합니다 :

$m=preg_replace('/([^\s>])\\\"/s',"$1»",$m); 
$m=preg_replace('/\\\"([^\s])/s',"«$1",$m); 

그러나 문자열이 공간에서 시작할 때, 나는 그런 일이 있습니다

»Some text» Some text Some text 

내가 어떻게 할 수 있습니까?

+0

예제에서는 "스마트"따옴표를 사용하지만 정규식을 사용하고 있으므로 실제로 따옴표를 바꿀 것입니다. –

+0

정규 표현식을 사용할 수 있습니다. 예, 원본 텍스트는 곧은 따옴표를 사용하며 동일합니다. 문제 야. 나는 "이 따옴표"를 텍스트의 "따옴표"로 대체해야합니다. (내 하찮은 영어 실력에 죄송하다는 말씀을 드리고 싶습니다) –

답변

2

가장 직접적인 방법은 견적 전에 바로 그것을 감지 할 lookarounds을 사용할 수 있습니다 한 단어 또는 바로 뒤에.

$m = preg_replace('/"(?=\w)/', '«', $m); 
$m = preg_replace('/(?<=\w)"/', '»', $m); 

이 방법은 사용자의 경우에는 효과적 일 수 있지만 너무 단순 할 수 있습니다. 더 나아가서 단어 또는 문자를 찾으려고 할 수 있습니다. 그래서 "어쩌구 저쩌구." 또한 일치 할 것입니다. 두 번째 예제를 다음과 같이 만들 수 있습니다. /(?<=[\w,.?!\)])"/

-1

과 같은 방식 일 수 있습니까?

$m=str_replace("&lt;","",$m); 
$m=str_replace("&rt;","",$m); 
0
$str = '"Test string "blabla" sdf "dd" dffdsf"'; 
$result = preg_replace('/(\s)"([^"]+)"(\s)/', '$1«$2»$3', $str); 
$result = preg_replace('/^"(.*?)"$/', '«$1»', $result); // replace first and last quotes 

이 코드는 많은 중첩 된 따옴표없이 문자열을 사용할 수 있습니다. 이 코드는 문자열을 작동하지 않습니다

"테스트"문자열은 "테스트"테스트 "테스트"

관련 문제