在抓取网页的 html 后,我需要有条件地替换文本以更正资源和媒体的链接。我需要通过将 'href="/' 替换为 'href="http://example.com/' 来替换本地链接,以便链接正常工作,但同时排除像 'href="//' 这样的内容链接到不使用“http:/https:”的异地资源以实现与 SSL 兼容和不与 SSL 兼容。所以...如果 'href="/' 或 'href=/'但如果 'href="//' 或 'href=//' 则不然这并没有取代任何东西... $html = str_replace('href="?/(?!/)', $url, $html);同时我首先替换//: $html = str_replace('href="//', 'href="https://', $html);
$html = str_replace('href=//', 'href=https://', $html);
1 回答
米脂
TA贡献1836条经验 获得超3个赞
您需要用于preg_replace正则表达式替换,而不是str_replace:
$tests = array("<a href=\"/", "<a href=/", "<a href=\"//", "<a href=//");
$pattern = '/href=("?)\/(?!\/)/';
foreach ($tests as $test) {
echo preg_replace($pattern, "href=\\1http://example.com/", $test);
echo "\n";
}
输出:
<a href="http://example.com/
<a href=http://example.com/
<a href="//
<a href=//
- 1 回答
- 0 关注
- 99 浏览
添加回答
举报
0/150
提交
取消