加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 用有效ID替换URL

发布时间:2020-12-13 21:47:44 所属栏目:PHP教程 来源:网络整理
导读:我有一个包含大量链接的 PHP String $菜单.我需要用基于链接的ID替换href. 我需要 删除域名 在开头和结尾删除斜杠 用’ – ‘替换中间的斜线 这就是我所拥有的: a href="http://www.test.de/start/"Link/aa href="http://www.test.de/contact/"Another Link
我有一个包含大量链接的 PHP String $菜单.我需要用基于链接的ID替换href.

我需要

>删除域名
>在开头和结尾删除斜杠
>用’ – ‘替换中间的斜线

这就是我所拥有的:

<a href="http://www.test.de/start/">Link</a>
<a href="http://www.test.de/contact/">Another Link</a>
<a href="http://www.test.de/contact/sub/">Sub Link</a>

这就是我想要的:

<a href="#start">Link</a> 
<a href="#contact">Another Link</a>
<a href="#contact-sub">Another Link</a>

我用preg_replace试了一下

$search = array(
    "/http://www.test.de/","/".preg_quote('/">','/')."/"
);
$replacement = array('#','">');
$menu = preg_replace($search,$replacement,$menu);

我的解决方案看起来有点“脏,并没有取代中间的斜线.任何想法”真正的“模式来完成这个?

解决方法

这可以通过DOM解析轻松完成:

$html = <<<EOM
<a href="http://www.test.de/start/">Link</a>
<a href="http://www.test.de/contact/">Another Link</a>
<a href="http://www.test.de/contact/sub/">Sub Link</a>
EOM;

$dom = new DOMDocument;
$dom->loadHTML($html);

foreach ($dom->getElementsByTagName('a') as $anchor) {
    $href = $anchor->getAttribute('href');
    if (strpos($href,'http://www.test.de/') === 0) {
        $href = '#' . strtr(trim(parse_url($href,PHP_URL_PATH),'/'),'/','-');
        $anchor->setAttribute('href',$href);
    }
}

echo $dom->saveHTML();

Demo

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读