我有一个来自网站的源代码,其中包含多个图像标签。我想使用 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 的在线实现。

关于php - RegEx:如何修改组的内容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33276654/

10-12 19:58