我有一个包含多个图片标签的网站的源代码.我想使用alt属性的内容作为我的src.所以我想改变这个
<img src="http://www.example.com/img/img.png" alt="A Title">
对此:
<img src="http://www.example.org/img/a_title.png" alt="A Title">
要在src属性中使用alt属性值,我使用以下正则表达式
/(<img.+?src=").+?(".+?alt="(.+?)">)/
使用1美元3美元2美元进行补贴.
我使用PHP作为语言.
但是如何修改第三组(小写,用下划线替换空格)?
最佳答案 这是一个使用preg_match的工作实现:
$input = "<img src=\"http://www.example.com/img/img.png\" alt=\"A Title\">";
$re = '~(<img\s*src=".*\/).*(\.[^"]*)("\s*alt="([^"]+).*)~';
preg_match($re, $input, $m);
$filtered_string = $m[1] . str_replace(" ","_",strtolower($m[4])) . $m[2] . $m[3];
输出:
<img src="http://www.example.com/img/a_title.png" alt="A Title">
在线实施here.
更新:preg_replace_callback实现:
$filtered_string = preg_replace_callback(
'~(<img.*src=".*\/).*(\.[^"]*)(".*alt="([^"]+).*)~',
function($m) {
return $m[1] . str_replace(" ","_",strtolower($m[4])) . $m[2] . $m[3];
},
$str
);
在线实施第二版here.