为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
互换的青春 2023-08-19 16:22:58
在抓取网页的 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=//

演示


查看完整回答
反对 回复 2023-08-19
  • 1 回答
  • 0 关注
  • 99 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信