2011-08-07 5 views
0

가장 효과적인 방법은 역 슬래시 사이에있는 $B 문자열의 두 쉼표 사이에 문자열 $A을 삽입하는 것입니다. PHP를 사용하는 문자열 조작?

$B = '},,,,,{' 

는 그때 쉼표의 양을 계산 적절한 문자열로 교체 '},, 특정 패턴을 찾을 것 인 algorythm의 생각

$B = "},$A,$A,$A,$A,{" 

로로 변환. 비록 내가 preg_replace를 사용하여 이렇게하는 것이 더 효율적인 방법이 되길 바랬지 만?

감사합니다.

+2

은 무엇이 JSON과 무슨 상관 이죠? –

+0

Google 문서의 형식이 잘못된 JSON은 빈 값을 제공하는 대신 쉼표를 사용합니다. – Mohammad

+0

나를 위해, $ A = { "v": ""} – Mohammad

답변

1

나는 preg_replace이다의 평가 기능을 사용합니다 :

전자 (PREG_REPLACE_EVAL) -이 변경자를 지정하면, preg_replace()는 대체 문자열에서 역 참조의 일반적인 교체는하지 PHP 코드로 평가

또는 짧은

# first we isolate }...{ and forward it to replace() 
print preg_replace('/(}[^{]+{)/e', 'replace("$1","'.$A.'");', $B); 

# next we replace ,, with ,$A, 
function replace($x,$y) { 
    return preg_replace("/,(?=,)/",",$y", $x); 
} 
:

print preg_replace('/(}[^{]+{)/e', 'preg_replace("/,(?=,)/",",'.$A.'", "$1")', $B); 
+0

진짜 문제를 확인해 주셔서 감사합니다. 당신은 훌륭합니다. – Mohammad

0

시도해보십시오. 그것은 비록 쉼표의 오프 수의 사실을 통해 던질 수 있습니다

$B = '},,,,,{'; 

$C = str_replace(",,", ",$A", $B); 

당신이 리터럴 문자열 $A을 의미하지 않는. 저희에게 알려주십시오.

+0

위의 코드 기술을 사용하면 표현했습니다. 저는'}, $ A, $ A를 얻을 것입니다. {'두 개의 쉼표 사이에 하나씩 넣을 때만 두 개의 $ A를줍니다. 즉, 제공된 예제에 대해 $ A가 4 개 필요합니다. – Mohammad

0

쉼표 패턴이 나타날 때마다 $A으로 바꾸시겠습니까?

두 개의 연속되는 쉼표와 같습니다.

+0

내가 위의 코드 기술을 사용하는 경우. 저는'}, $ A, $ A를 얻을 것입니다. {'두 개의 쉼표 사이에 하나씩 넣을 때만 두 개의 $ A를줍니다. 즉, 제공된 예제에 대해 $ A가 4 개 필요합니다. – Mohammad

+0

내 대답의 코드는 "필요한 세부 정보를 올바르게 처리하라"는 의미는 아닙니다.) – brezanac

+0

preg_replace가 필요한 교체 횟수를 계산할 수있는 옵션을 제공했는지 궁금한 점이 있음을 암시합니다. 어떤 종류의 루핑 알고리즘도 피하십시오. – Mohammad