2013-01-18 2 views
1

나는 문제가있어, 나를 도울 수 있습니까? 텍스트가 있는데 "에서"로 바꾸고 싶습니다.인용 부호에서 문자열을 인용 부호로 대체하는 방법은 무엇입니까?

<span>new var[128]; format(var, sizeof(var), "something %s %f", "Stuneris", 1589.0587); SendClientMessage(playerid, 0xFFFFFFFF, var);</span> 

내가 "something %s %f" 원하는 "Stuneris"<span class="numb">"something %s %f"</span><span class="numb">"Stuneris"</span>

에 교체 그리고 다른 문제는 0xFFFFFFFF에서 <span class="numb">0xFFFFFFFF</span>에 HEX 코드를 대체하는 것입니다.

내가해야 할 일은 무엇입니까?

+0

당신은'str_replace'를 사용할 필요가 있습니다. – Kermit

+0

저는 그것을 알고 있습니다 만, 인용문에서 인용하는 방법은 알고 있습니까? – Stuneris

+0

리터럴 솔루션 (이 두 가지 특정 인스턴스) 또는 모든 16 진 코드와 따옴표 사이의 모든 문자열을 대체하는 일반 솔루션을 찾고 있습니까? –

답변

1

쉽습니다 :

$text = preg_replace('/(0x[0-9a-f]+)/i','<span class="numb">$1</span>',$text); 

는 따옴표로 문자열을 교체입니다 조금 더 까다 롭습니다. 주요 문제는 "something %s %f"이지만, ", " (따옴표로 묶인 문자열을 구분하지만 따옴표 붙은 문자열처럼 보일 것임)을 제외하는 것입니다. 문자열의 쉼표가 결코 당신이 확신 할 수 있다면, 당신은 사용하십시오 : 쉼표를 허용해야하는 경우

$text = preg_replace('/("[^",]+")/i','<span class="numb">$1</span>',$text); 

, 이것은 쉼표로 시작하는 모든 문자열을 제외합니다 :

$text = preg_replace('/("(?!,)[^"]+")/i','<span class="numb">$1</span>',$text); 
+0

쉼표 제한을 추가하는 것은 아마도 필요하지 않다. 문자열이 쉼표보다 먼저 인용되면 그 단어가 바뀌어 큰 따옴표는 바뀌지 않는다. 두 번째 교체를 망쳐 놓으십시오. 그러나 나는 당신이 추가 할 것을 제안 할 것인가? 표현을 엉성하게 만드는 법 – Tom

1

당신은 preg_replace으로 작업을 수행 할 수 있습니다

preg_replace('/"([^"]*)"/', '<span class="numb">"\1"</span>', $string); 

16 진수 코드와 일치하려면 : HEX 코드를 교체

preg_replace('/0x([0-9A-Fa-f]*)/', '<span class="numb">\1</span>', $string); 
관련 문제