对于项目,我需要获取网站内容并更改HTML代码。该网站上的每个链接都必须替换为我自己的链接。我使用MyModel::withCount('enabledUsers', 'phoneUsers')->get();
直到我意识到链接有时会分配给它们。
我已尝试str_replace
功能在每个href链接之前添加我自己的网站,该链接也位于preg_replace
<a>
个标记之间。 </a>
中获取的网站是否包含$content
或href=""
无关紧要。
href=''
这不起作用,我找不到错误。它应该表现如下:
$content = preg_replace('~(<a\b[^>]*\shref=")([^"]*)(")~igs', '\1http://website.com/fetch.php?url=\2\3', $content);
应该变成
<a class="link" href="http://google.com">Google</a>
有人可以帮我找到错误吗?提前谢谢。
答案 0 :(得分:0)
不要错过一个会错过很多案例的正则表达式。只需将每个文档读入DOM树(将此html5 DOM parser一行),然后使用XPath获取具有href
属性的所有链接,并更新它们,然后保存结果。
答案 1 :(得分:0)
只需使用simplexml
和preg_replace
<?php
$string= '<a class="link" href="http://google.com">Google</a>';
$a = new SimpleXMLElement('<a class="link" href="http://google.com">Google</a>');
$newurl="http://website.com/fetch.php?url=".urlencode($a['href']);
$pattern = "/(?<=href=(\"|'))[^\"']+(?=(\"|'))/";
$body = preg_replace($pattern,$newurl,$string);
echo $body;
?>
<强>输出:强>
<a class="link" href="http://website.com/fetch.php?url=http%3A%2F%2Fgoogle.com">Google</a>