猿问

如何使用 if/not 有条件地 str_replace 文本

在抓取网页的 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);


互换的青春
浏览 100回答 1
1回答

米脂

您需要用于preg_replace正则表达式替换,而不是str_replace:$tests = array("<a href=\"/",&nbsp; "<a href=/", "<a href=\"//", "<a href=//");$pattern = '/href=("?)\/(?!\/)/';foreach ($tests as $test) {&nbsp; echo preg_replace($pattern, "href=\\1http://example.com/", $test);&nbsp; echo "\n";}输出:<a href="http://example.com/<a href=http://example.com/<a href="//<a href=//演示
随时随地看视频慕课网APP
我要回答