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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |