所以,我正在尝试创建一个执行以下操作的函数:
有一种优雅的方式吗?我一直在努力创造一个正则表达来照顾我,并且到目前为止只遇到了史诗般的失败。
任何帮助非常感谢。
答案 0 :(得分:2)
首先,不要使用正则表达式来解析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();
答案 1 :(得分:1)
PHP Simple HTML DOM Parser可以解决这个问题。