替换所有的src属性值HTML 文档中的标签
我有以下代码(php),它将匹配 img-src 并替换为新的 url
$rep = array('/', '+', '(', ')');
$with = array('\/', '\+', '\(', '\)');
$match_pattern = '/<img[^<]*src\s*=\s*\"'.str_replace($rep, $with, $source_url).'\"[^>]*>/iUu';
$img_replace_str = '<img src="'.$new_url.'" />';
$post_content = preg_replace($match_pattern, $img_replace_str, $post_content);
对于 src
为 http://www.example.com/a.jpg,没有问题,但对于
src
包含查询字符串(如 http://www.example.com/b.jpg?height=900
)的图像,不匹配。
我想匹配带有和不带有查询字符串的图像标签。
I have following code (php), it will match img-src and replace with new url
$rep = array('/', '+', '(', ')');
$with = array('\/', '\+', '\(', '\)');
$match_pattern = '/<img[^<]*src\s*=\s*\"'.str_replace($rep, $with, $source_url).'\"[^>]*>/iUu';
$img_replace_str = '<img src="'.$new_url.'" />';
$post_content = preg_replace($match_pattern, $img_replace_str, $post_content);
For images that have src
as http://www.example.com/a.jpg
, there is no issue, but for images that have src
that contains query string like http://www.example.com/b.jpg?height=900
, it's not matching.
I want to match image tags with and without a query string.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以使用 PHP 的
preg_quote()
-function 代替str_replace()< /代码>。它会自动转义所有正则表达式特殊字符(请参阅文档)。这应该可以解决问题,因为您的
str_replace()
解决方案没有转义?
,它是正则表达式中的特殊字符:You can use PHP's
preg_quote()
-function instead ofstr_replace()
. It automatically escapes all regular expression special characters (see the docs). That should solve the problem, since yourstr_replace()
-solution did not escape?
, which is a special character in regular expressions:使用合法的 DOM 解析器可以轻松直观地替换包含任何属性的
标签的
src
属性值。 XPath 仅针对标记的
src
属性进行了非常直接的工作。代码:(演示)
输出(经过两次合格的替换后):
Use a legitimate DOM parser to easily and intuitively replace
src
attribute values of<img>
tags containing any manner of attributes. XPath does an exquisitely direct job of targeting thesrc
attribute of<img>
tags ONLY.Code: (Demo)
Output (after two qualifying replacements):