2013-11-08 3 views
1

Я пытаюсь создать выражение Regex для использования с preg_replace(), чтобы заменить выражение, которое находится между двумя другими выражениями. Общая идея заключается в том:PHP Regex заменить выражение внутри двух выражений

$new = "stuff"; 
$original = /*see below*/; 
$final = preg_replace('regex expression', $new, $original); 

пример $ исходной строки:

(...) "дл см = хххх opop1 = XYZ opop3 = XXXXXXXXXXXX, XXXX," thisisit»YYYY = г "(...)

пример конечной строки $:

(...)" дл см = хххх opop1 = XYZ opop3 = ХХХХХХХХХХХХ, XXXX, "материал" YYYY = г "(...)

(The крестики, Y-х, Z может быть любой символ)

Выражение должно найти«opop3 = ХХХХХХХХХХХХ, XXXX," ' затем следующее «» и измените текст внутри этих двух разделителей.

Я думаю, что я нашел, как найти первый разделитель

(opop3.=(.*)(\,)(.*)(\,)\") 

И найти следующее " 'не трудно, но я не знаю, как я могу изменить текст между ними, не касаясь . ограничители

(или если кто-то знает другой способ сделать это, пожалуйста, дайте мне знать)

ответ

1

Вы можете использовать \K (сброс поиска) в PCRE:

$final = preg_replace('/XXXXXXXXXXXX,XXXX,"\K[^"]+/', $new, $original); 
+0

спасибо, это сработало! $ final = preg_replace ("/ opop3. * =. *,. *," \ K [^ "] + /", "notinternet", $ input_lines); –

+0

Добро пожаловать, рад, что это сработало для вас. – anubhava

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