最近遇到一个问题,要将一篇日志中的所有img中的src的取出来,然后根据src的内容重新生成src,做PHP中使用函数preg_replace(),利用了正则表达式的反向引用:
$content = '文字文字<img src="http://www.baidu.com/img/baidu_logo_jr_1008_qx.gif>;其他文字<img src="http://list.image.baidu.com/t/image_category/res/Gangtai/Ye_Xuan.jpg" alt="" width="95" height="115" >;';
function img_convert($img,$param){
$filepath = getBlogPicUrl($img); //调用getBlogPicUrl()重新生成新的src值
$param= str_replace("\\",$param);
$str ='img src="http://www.codebean.cn/wp-admin/'.$filepath.'" alt="" />';
}
function getBlogPicUrl($img){
//重新生成src值的代码
}
$content = preg_replace("/\/ie","img_convert('$2','$1$3')",$content);
这里使用了正则的反向引用,在调用img_convert()函数时,传给img_convert()的即是正则表达式的分别匹配三个()的值,分别按顺序为$1,$2,$3,也可是\\1,\\2,\\3 这种形式.
另外我在preg_replace的替换部分直接使用了函数img_convert(),这需要在正则表达式中加个参数e。