PHP预匹配/替换?

PHP预匹配/替换?,php,regex,preg-replace,preg-match,Php,Regex,Preg Replace,Preg Match,我需要读取字符串$mysting并替换e.x的所有事件 <img src="dummypic.jpg alt="dummy pic"> 与 换句话说,在缺少标题的地方添加标题,并使标题标记与alt标记具有相同的值 有些事件我有额外的参数,如border、with、height,这些参数应该保持不变……您真的希望使用html解析器而不是正则表达式来完成这项工作。正则表达式不适合于html处理。您确实希望使用html解析器而不是正则表达式来完成此操作。正则表达式不适用于html

我需要读取字符串$mysting并替换e.x的所有事件

<img src="dummypic.jpg alt="dummy pic">


换句话说,在缺少标题的地方添加标题,并使标题标记与alt标记具有相同的值


有些事件我有额外的参数,如border、with、height,这些参数应该保持不变……

您真的希望使用html解析器而不是正则表达式来完成这项工作。正则表达式不适合于html处理。

您确实希望使用html解析器而不是正则表达式来完成此操作。正则表达式不适用于html处理。

请查看修改属性的方法,而不是正则表达式,特别是在有任何复杂性的情况下。

请查看修改属性的方法,而不是正则表达式,特别是在有任何复杂性的情况下。

您可以使用phpQuery或执行以下操作:

$qp = qp($html);
foreach ($qp->find("img") as $img) {
    $img->attr("title", $img->attr("alt"));
}
print $qp->writeHTML();
尽管在这种简单的情况下使用正则表达式可能是可行的:

preg_replace('#(<img\s[^>]*)(\balt=)("[^"]+")#', '$1$2$3 title=$3', $h);
preg#u replace('#(]*)(\balt=)(“[^”]+”),“$1$2$3 title=$3',$h);
(使用preg_replace_callback来确保还没有title=属性会更有意义。)

您可以使用phpQuery或执行以下操作:

$qp = qp($html);
foreach ($qp->find("img") as $img) {
    $img->attr("title", $img->attr("alt"));
}
print $qp->writeHTML();
尽管在这种简单的情况下使用正则表达式可能是可行的:

preg_replace('#(<img\s[^>]*)(\balt=)("[^"]+")#', '$1$2$3 title=$3', $h);
preg#u replace('#(]*)(\balt=)(“[^”]+”),“$1$2$3 title=$3',$h);

(使用preg_replace_callback来确保还没有title=属性,这会更有意义。)

我的答案是一个指向已知答案的链接


我的答案是一个著名答案的链接


我通常在这种情况下编写快速的恶意攻击(通常使用结构化数据,可能存在不一致性,例如模板引擎标记、条件等)。在我看来,这是一个糟糕的解决方案,但我可以超快速地完成这些脚本

例如


我通常在这种情况下编写快速的恶意攻击(通常使用结构化数据,可能存在不一致性,例如模板引擎标记、条件等)。在我看来,这是一个糟糕的解决方案,但我可以超快速地完成这些脚本

例如


如果您需要社区更快的响应,请发布您已经尝试过的代码。请注意,title和alt是属性,而不是标记。从技术上讲,图像标签不需要title属性,因为屏幕阅读器使用alt属性,并且当图像被禁用以显示图像描述时,但这不是问题所在:-)如果需要社区更快的响应,请发布您已经尝试过的代码。请注意,title和alt是属性,而不是标记。从技术上讲,图像标签不需要title属性,因为屏幕阅读器使用alt属性,并且当图像被禁用以显示图像描述时,但这不是重点:-)的可能重复请提供一个示例,而不是一般建议。OP没有发布他的代码。。。我认为这是非常好的,任何人都可以回答。请提供一个例子,而不是一般的建议。嗯,OP没有张贴他的代码。。。我认为任何人都能回答这一问题都是非常好的。这将更好地融入到评论中。我的答案是转介到另一个答案,这完全符合回答的标准。这将更好地融入到评论中。我的答案是转介到另一个答案,这完全符合回答的标准