这将是使用功能来生成你的意见链接的优点之一:
<a href="<?= build_link('www.link.com'); ?>">link text</a>
你build_link()
会像这样:
function build_link($path)
{
$prefix = '';
if (preg_match('|^(https?://|www\.)', $path))
{
$prefix = 'http://www.oursite.php?to=';
}
return $prefix . $path;
}
这意味着你甚至可以用CDN很容易在你的链接中。
最简单的选择是使用Javascript,但是像你说的那样依赖于用户使用Javascript启用的浏览器,这是因为浏览器技术的进步,甚至在移动平台中,非常喜欢。 jQuery的看起来像这样:
$(document).ready(function() {
$('a').live('click', function() {
var href = $(this).attr('href');
if (href.match(/^(https?:\/\/|www\\.)/i))
{
this.href = 'http://www.oursite.php?to=' + href;
}
return this.href;
});
});
如果更改链接是不可行的,也就是说,你需要重写链接是数据库或类似的里面,我会考虑使用DOMDocument
- 这是总体上是好的做法,以避免处理复杂的结构,如HTML时
$doc = new DOMDocument('1.0', 'UTF-8');
$doc->loadHTML($text);
$anchors = $doc->getElementsByTagName('a');
foreach($anchors as $a) {
$href = $a->getAttribute('href');
if (preg_match('|^(https?://|www\.)', $href))
{
$a->setAttribute('href', 'http://www.oursite.php?to=' . $href);
}
}
$newHTML = $doc->saveHTML();
所以有三种选择这里凌乱的正则表达式:
去通过对每一个部分的现场输出链接到外部网站,并使用DOMDocument
的帮助下通过build_link
功能他们重新写
重写
- 使用JavaScript
谢谢!!!!,什么你建议吗? DOM文档的缺点?像RAM的使用?如果有选择权的赞成和反对会更好。 – 2011-04-19 14:54:23
我还没有做任何测试以查看DOMDocument的性能,您可能想自己测试一下,看看它是否太重。这对于简单的事情可能有点沉重,所以如果你想要使用正则表达式路由,你可以执行'preg_replace('| ] +)| i','http://www.oursite.php?to = $ 1',$ html);' – 2011-04-19 15:53:56