Использование preg_replace без уничтожения идентификационной информации - PullRequest
0 голосов
/ 29 июля 2010

Я пытаюсь взломать код боковой панели в шаблоне Wordpress, который я разрабатываю. По сути, я записал то, что мне нужно, в выходной буфер, и я использую регулярное выражение поверх него, чтобы заменить биты кодом, который мне нужен. Проблема в том, что мои знания в области регулярных выражений немного не соответствуют тому, чего мне нужно достичь.

Проблема у меня такова:

$output = preg_replace('/<\/li><li id=".*?" class="widget-container/', '<a href="top">Top</a></li><li><li id="[item from that find]" class="widget-container/', $input);

В настоящий момент, когда код стоит, я могу найти то, что мне нужно, но он уничтожает эти атрибуты id, поскольку я не могу их перехватить.

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

Как я могу использовать это, чтобы изменить код, не разрушая эти уникальные идентификаторы?

Ура, ребята!

Ответы [ 3 ]

1 голос
/ 29 июля 2010

Вам необходимо использовать обратную ссылку. Захватите идентификатор с помощью (), а затем сделайте ссылку на захват с $ 1 ... см. Ниже:

$output = preg_replace('/<\/li><li id="(.*?)" class="widget-container/', '<a href="top">Top</a></li><li><li id="$1" class="widget-container/', $input);
0 голосов
/ 29 июля 2010
$pattern = '/<\/li><li id="(.*?)" class="widget-container/';
$replace = '<a href="top">Top</a></li><li><li id="$1" class="widget-container/'
$output = preg_replace($pattern, $replace, $input);
0 голосов
/ 29 июля 2010

оберните шаблон, который вы хотите сопоставить в () и используйте $ 1

...