PHP函数有条件地替换html中的URL
因此,我尝试创建一个函数,它执行以下操作:PHP函数有条件地替换html中的URL,php,regex,Php,Regex,因此,我尝试创建一个函数,它执行以下操作: 接收字符串形式的HTML 查找文件路径(在SRC=attributes中) 仅替换以domain example.com开头的图像URL 仅替换图像(jpg、jpeg、gif、png) 将映像的域替换为example2.com 返回替换了图像URL的HTML 有没有一种优雅的方法?我一直在努力创建一个正则表达式来处理它,到目前为止,我只遇到过epic fail 非常感谢您的帮助 应该这样做。应该这样做。首先,不要使用正则表达式解析HTML 下面是一
- 接收字符串形式的HTML
- 查找文件路径(在SRC=attributes中)
- 仅替换以domain example.com开头的图像URL
- 仅替换图像(jpg、jpeg、gif、png)
- 将映像的域替换为example2.com
- 返回替换了图像URL的HTML李>
非常感谢您的帮助 应该这样做。应该这样做。首先,不要使用正则表达式解析HTML 下面是一个使用XPath和DomDocument的基本示例:
$dom = new DomDocument();
$dom->loadHtml($html);
$xpath = new DomXpath($dom);
$query = '//img[contains(@src, "example.com")]';
$imgs = $xpath->query($query);
foreach ($imgs as $img) {
$src = $img->getAttribute('src');
$parts = explode('.', $src);
$extension = strtolower(end($parts));
if (in_array($extension, array('jpg', 'jpeg', 'gif', 'png'))) {
$src = str_replace('example.com', 'example2.com', $src);
$img->setAttribute('src', $src);
}
}
$html = $dom->saveHtml();
首先,不要使用正则表达式来解析HTML 下面是一个使用XPath和DomDocument的基本示例:
$dom = new DomDocument();
$dom->loadHtml($html);
$xpath = new DomXpath($dom);
$query = '//img[contains(@src, "example.com")]';
$imgs = $xpath->query($query);
foreach ($imgs as $img) {
$src = $img->getAttribute('src');
$parts = explode('.', $src);
$extension = strtolower(end($parts));
if (in_array($extension, array('jpg', 'jpeg', 'gif', 'png'))) {
$src = str_replace('example.com', 'example2.com', $src);
$img->setAttribute('src', $src);
}
}
$html = $dom->saveHtml();
那个刚刚打开了一个全新的世界。谢谢你,我现在就去试一试!那个刚刚打开了一个全新的世界。谢谢你,我现在就去试一试!我觉得马克塞尔的评论更全面;但是简单的HTMLDOM解析器是以一种对我来说更容易使用的方式记录的。非常感谢。我觉得马克塞尔的评论更全面;但是简单的HTMLDOM解析器是以一种对我来说更容易使用的方式记录的。非常感谢。