什么是l.php
我有一些想法。像我猜。php是链接。php打开facebook。这是一个预重定向脚本。facebook上的每个链接都是过滤到link.php?=链接
使渲染类或过滤输入正则表达式,找到一个www.link.com然后改变它像
<a href="http://www.oursite.php?to=www.link.com">link</a>
,问题是当我们有一些变化,如果我们改变的东西,那么我们所有的档案链接不会工作(假设我们把输入到数据库)。.使用JavaScript做到这一点,我的意思是是的,但我不熟悉js,但我知道我们可以搜索和改变链接生活像上面。但问题是,当用户没有一个js,(移动,或没有JavaScript插件,等)
或者你有更好的答案我们植入php的最佳方式是什么
这是使用函数在视图中生成链接的优点之一:
<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();
这里有三个选项:
检查您的站点上输出外部站点链接的每个部分,并通过
build_link
函数重写它们使用
DOMDocument
的帮助重写- 使用Javascript
我将使用PHP让页面内容通过一个过滤器运行,该过滤器使用regex来替换链接。
使用javascript意味着人们可以关闭它。PHP确保所有链接都被正确替换。
只是要记住,确保任何内部链接(如导航)保持不变。
有很多类型的regex可以找到url,你必须选择一个适合你需要的
编辑:我会使用这个正则表达式(https?://([-'w'.]+)+(:'d+)?(/(['w/_'.]*('?'S+)?)?)?)