在我的论坛上传图片时,会获得以下html:
<a target="_blank" href="attachment.php?aid=1" rel="nofollow">zebra.bmp</a>
为了使用我安装的插件,我需要匹配那些类型的html并将其更改为:
<a href="attachment.php?aid=1" rel="fancyzoom">zebra.bmp</a>
在插件上它已经进行了一些转换,例如:
$page=preg_replace('/\<a rel="nofollow" href="attachment.php\?aid=([0-9]+)" target="_blank"\>\<img/Usi','<a href="attachment.php?aid=$1" rel="fancyzoom"><img',$page);
现在我想抓住我在问题开头发布的html
$page=preg_replace('/\<a target="_blank" href="attachment.php\?aid=([0-9]+)" rel="nofollow"\>([a-zA-Z0-9_- ]+)\.(jpg|jpeg|gif|png|bmp|tif|tiff)\<\/a\>/Usi','<a href="attachment.php?aid=$1" rel="fancyzoom">$2.$3</a>',$page);
但上面似乎没有用,是因为OR括号? 有没有办法进行这样的替换,我只想要以上面的图像扩展名结尾的文件?
答案 0 :(得分:2)
你只需要逃避减号:
$page=preg_replace('/\<a target="_blank" href="attachment.php\?aid=([0-9]+)" rel="nofollow"\>([a-zA-Z0-9_\- ]+)\.(jpg|jpeg|gif|png|bmp|tif|tiff)\<\/a\>',$page);
另见demo。
=== UPDATE ===
$page=preg_replace('/\<a.*?href="attachment.php\?aid=([0-9]+)".*?\>([a-zA-Z0-9_\- ]+)\.(jpg|jpeg|gif|png|bmp|tif|tiff)\<\/a\>/Usi','<a href="attachment.php?aid=$1" rel="fancyzoom">$2.$3</a>',$page);
我的新demo。
答案 1 :(得分:0)
这样就够了吗?
\<a target="_blank" href="attachment.php\?aid=([0-9]+)" rel="nofollow"\>[a-zA-Z0-9_-]*.(jpg|jpeg|gif|png|bmp|tif|tiff)\<\/a\>
+是此语法中的问题