如何解决像lfacebook这样的l.php的好方法吗?
| 什么是l.PHP 我猜l.PHP是link.PHP上 脸书它是一个预重定向 脚本。在facebook上的每个链接是 过滤到link.PHP?to = link 我有一些想法。喜欢 创建一个渲染类或使用正则表达式过滤输入,找到一个www.link.com然后将其更改为<a href=\"http://www.oursite.PHP?to=www.link.com\">link</a>
,问题是当我们进行了一些更改时,如果我们进行了更改,则所有存档链接都不会工作(假设我们将输入放入数据库中。)。
使用JavaScript可以做到这一点,我的意思是,但是我对js不熟悉,但是我知道我们可以像上面那样搜索和更改链接。但是问题是当用户没有js(移动或没有JavaScript插件等)时
还是您有一个更好的答案,什么是我们植入l.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();
因此,这里有三个选项:
浏览站点上输出到外部站点的链接的每个部分,然后通过“ 7”功能重写它们
在ѭ5的帮助下重写
使用JavaScript,我本来会使用PHP来让页面的内容通过使用正则表达式替换链接的过滤器运行的。
使用javascript意味着paople可以将其关闭。 PHP确保正确替换所有链接。
只要记住确保所有内部链接(如导航)保持不变即可。
查找URL的正则表达式有很多类型,您必须选择一种适合您需要的正则表达式
编辑:我将使用此正则表达式(https?://([-\\w\\.]+)+(:\\d+)?(/([\\w/_\\.]*(\\?\\S+)?)?)?)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。