所以我几天来一直在尝试替换这个img
<img src="$post[avatarurl]" $post[avwidth] $post[avheight] alt="<phrase 1="$post[username]">$vbphrase[xs_avatar]</phrase>" border="0" />
与一个div。
我终于得到了一个结果
$vbulletin->templatecache['postbit'] = str_replace('<img src="$post[avatarurl]"', 'CRAP', $vbulletin->templatecache['postbit']);
它像它应该的那样替换了 IMG 的开头和 SRC 标签。
但我似乎无法让它抓取 img 标签中的所有内容,我试图做类似的事情
str_replace('<img src="$post[avatarurl]".*/>', .......
但是当我添加最后一部分 .*/> 时它停止工作 =(我做错了什么,我怎样才能让它抓住 img 标签中的所有内容 =/
如果要使用正则表达式 .*,则必须调用 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);
在这里,我保护了 caracters $ [],因为它们在正则表达式中具有特殊的度量。另请注意 ?在 .* 后签名。永远记住,正则表达式是贪婪的,它们会继续吞噬你的所有文件。