замена img на div str_replace

поэтому я пару дней пытался заменить этот img

<img src="$post[avatarurl]" $post[avwidth] $post[avheight] alt="<phrase 1="$post[username]">$vbphrase[xs_avatar]</phrase>" border="0" />

с див.

Я наконец получил результат, используя

$vbulletin->templatecache['postbit'] = str_replace('<img src=\"$post[avatarurl]\"', 'CRAP', $vbulletin->templatecache['postbit']);

который заменяет открывающий и src тег img, как и должно быть.

но я не могу заставить его захватить все в теге img, я пытаюсь сделать что-то вроде

str_replace('<img src=\"$post[avatarurl]\".*/>', .......

но когда я добавляю эту последнюю часть .*/>, она перестает работать =( что я делаю неправильно, как я могу заставить ее захватить все в теге img =/


person DrCustUmz    schedule 18.03.2016    source источник


Ответы (1)


Если вы собираетесь использовать регулярное выражение .*, вам нужно вызвать preg_repalce вместо str_replace.

Если ваша строка похожа на эту

$string = '<img some stuff /><img src="$post[avatarurl]" $post[avwidth] $post[avheight] alt="<phrase 1="$post[username]">$vbphrase[xs_avatar]</phrase>" border="0" /><img some other stuff />';

Тогда подходящим регулярным выражением может быть следующее:

$result = preg_replace('/<img src="\$post\[avatarurl\].*? \/>/', 'CRAP', $string);

Здесь я защитил символы $ [], потому что они имеют особое значение в регулярных выражениях. Обратите внимание также на ? знак после .*. Всегда помните, что регулярные выражения жадны, они будут поглощать весь ваш файл.

person Giovanni S. Fois    schedule 18.03.2016
comment
очень хорошо объяснил и помогает мне понять намного яснее, но по какой-то причине это все еще не имеет никакого эффекта. $search = /‹img src=\$post[avatarurl].*? \/›/; $ заменить = ДЕРЬМО; $vbulletin-›templatecache['postbit'] = preg_replace($search,$replace,$vbulletin-›templatecache['postbit']); это код, который я использую - person DrCustUmz; 18.03.2016
comment
если я использую /[^‹img src=(.?*)^‹\/›]/ для моего поиска, я получаю результаты, но они повторяются =/ я думаю, что может быть проблема с $post[avatarurl ] переменная тоже я не могу заставить ее использовать это вообще - person DrCustUmz; 18.03.2016
comment
В переменной $search вы должны использовать одинарные кавычки, а не двойные: $search='$somestring' а не $search=$somestring , знак $ должен быть сохранен как буквальный, а не как переменная с именем $somestring . - person Giovanni S. Fois; 18.03.2016