我正在使用htmlpurifier来创建我的网站的纯文本版本。 我现在需要用仅文本网址替换所有href,即'www.example.com/aboutus'变为'www.example.com/text/aboutus'
最初我在域上尝试了一个简单的str_replace(我为域使用了一个全局变量),但问题是文件的链接也被替换,即 'www.example.com/document.pdf'变为'www.example.com/text/document.pdf',因此失败。
是否有正则表达式,我可以说用域/文本替换域,其中url不包含字符串?
感谢您提供给我的任何指示:)
答案 0 :(得分:1)
$output = preg_replace(
'#www.example.com(?!/text/)#',
'www.example.com/text',
$input
);
更好的是,使用DOM:
$html = '<a href="www.example.com/something">foo</a>
<p>hello</p>
<a href="www.example.com/text/documents">bar</a>';
libxml_use_internal_errors(true); // supresses DOM errors
$dom = new DOMDocument;
$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
$hrefs = $xpath->query('//a/@href');
foreach ($hrefs as $href) {
$href->value = preg_replace(
'#^www.example.com(?!/text/)(.*?)(?<!\.pdf)$#',
'www.example.com/text\\1',
$href->value
);
}
这应该给你:
<a href="www.example.com/text/something">foo</a>
<p>hello</p>
<a href="www.example.com/text/documents">bar</a>