$test = "<div><b><i>#uniquetag#</b></i></div> <div>Keep this</div>";
$test = preg_replace("/<div(.*)#uniquetag#(.*)<\/div>/i", "#uniquetag#", $test);
Я хочу, чтобы результат был
$test = "#uniquetag# <div>Keep this</div>";
Но возвращается
$test = "#uniquetag#";
Думаю, я знаю почему. (. *) является жадным и продлевает поиск до конца. Но я не могу понять, как правильно это сделать.
Обновление:
Особая благодарность ghostdog74. Старая проблема решена. Возникла новая проблема ....
$test = "<div></div> <div><b><i>#uniquetag#</b></i></div> <div>Keep this</div>";
$test = preg_replace("/<div(.*)#uniquetag#(.*?)<\/div>/i", "#uniquetag#", $test);
Ожидаемый результат:
$test = "<div></div> #uniquetag# <div>Keep this</div>";
Но получается
$test = "#uniquetag# <div>Keep this</div>";
Опять же, я считаю, что это из-за первого (. ). Изменение его на (. ?) Также не поможет. Нужно придумать способ исключить.