2011-08-07 2 views
0

Как я могу наиболее эффективно вводить строку $A между двумя запятыми в String $B, которые лежат между скобами.Обработка строк с помощью PHP?

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

превращается в в

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

Я думал о том, что бы алгоритме найти конкретную картину '},, посчитать количество запятых, то заменить его на соответствующей строке. Хотя я надеялся, что будет более эффективный способ сделать это, может быть, с preg_replace?

спасибо.

+2

Что это нужно делать с JSON? –

+0

Неутешительный JSON Google Doc выглядит так, вместо того, чтобы давать вам пустые значения, он дает вам запятую. – Mohammad

+0

для меня, $ A = {"v": ""} – Mohammad

ответ

1

Я хотел бы использовать Eval возможности 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 для предоставленного примера. – Mohammad

0

Почему вы не просто заменяете каждый элемент запятой на $A?

Как и каждые две последовательные запятые.

+0

Если я использую приведенную выше технику кода, которую вы представили. Я бы получил '}, $ A, $ A, {' давая мне только два $ A, когда я хочу один между двумя запятыми, то есть мне нужно четыре $ A для предоставленного примера. – Mohammad

+0

В моем ответе нет кода: «обрабатывайте мелкие детали по мере необходимости»;) – brezanac

+0

Я намекнул в конце вопроса, что мне было интересно, если preg_replace дал мне возможность подсчитать количество необходимых замен, а затем заменить соответствующим образом. Чтобы избежать любого алгоритма цикла. – Mohammad

Смежные вопросы