如何使用PHP获取网站的最终重定向网址? - php

在链接缩短程序和Ajax时代,可能有很多链接最终指向相同的内容。我想知道最好的方法是用PHP来获得PHP网站的最终,最佳链接。我在Google或GitHub上找不到任何东西。

我已经看到了此示例代码,但是它无法处理rel =“ canonical”元标记或默认ssl端口之类的内容:http://w-shadow.com/blog/2008/07/05/how-to-get-redirect-url-in-php/

Facebook似乎处理得很好,您可以看到他们如何遵循301和rel =“ canonical”等。要查看Facebook处理方式的示例,请使用其Open Graph工具:

https://developers.facebook.com/tools/debug

并输入以下链接:

http://dlvr.it/xxb0W
https://twitter.com/#!/twitter/statuses/136946408275193856

是否有一个已经预先构建好的PHP库,它将在其中检查这些标头,解析301重定向,解析rel =“ canonical”,检测重定向循环并正确地获取要使用的最佳结果URL?

作为替代方案,我对可以使用的API持开放态度,但希望使用在自己的服务器上运行的API。

参考方案

由于我找不到真正能满足我需求的库,并且希望做的不只是遵循HTTP重定向,所以我继续创建了一个库,该库可以实现目标并在MIT下发布执照。你可以在这里得到它:

https://github.com/mattwright/URLResolver.php

URLResolver.php是一个PHP类,尝试将URL解析为最终的规范链接:

遵循在HTTP标头中找到的301和302重定向
遵循在网页中找到的Open Graph URL 标签
遵循在网页中找到的Canonical URL 标记
如果内容类型不是HTML页面,则中止快速下载

我当然不是HTTP重定向规则方面的专家,所以如果有人对如何改进此库提出建议,将不胜感激。我已经在数千个URL上进行了测试,它似乎做得很好。我遵循了Mario的建议,并在需要时使用了PHP Simple HTML Parser库。

PHP-将日期插入日期时间字段 - php

我已在数据库中使用datetime字段存储日期,使用PHP将“今天的日期”插入该字段的正确方法是什么?干杯, 参考方案 我认为您可以使用php date()函数

PHP getallheaders替代 - php

我正在尝试从服务器上的apache切换到nginx。唯一的问题是我在PHP脚本中使用的getallheaders()函数,该函数不适用于Nginx。我已经尝试过用户在getallheaders函数上的php站点上提供的注释,但这并不返回所有请求标头。请告诉我如何解决这个问题。我真的想切换到Nginx。 参考方案 您仍然可以使用它,但是您必须像这里一样重新定义…

php Singleton类实例将在多个会话中保留吗? - php

举一个简单的例子,如果我想计算一个不使用磁盘存储的脚本的命中次数,我可以使用静态类成员来执行此操作吗?用户1:<?php $test = Example::singleton(); $test->visits++; ?> 用户2:<?php $test = Example::singleton(); $test->visits+…

更改默认的URL PHP - php

如何更改默认网址。例如www.example.com/index.php-> www.example.com现在,我要将其设置为www.example.com/test.php。我应该在php.ini中进行更改吗? 参考方案 假设您正在使用apache,则可以通过DirectoryIndex指令执行此操作。Check out the docs。

PHP:将字符串拆分为字母和数字部分的最佳方法 - php

我有几个格式的字符串AA11 AAAAAA1111111 AA1111111 分离字符串的字母和数字部分的最佳方法(最有效)? 参考方案 如果它们都是一系列字母,然后是一系列数字,并且没有非字母数字字符,那么sscanf()可能比regexp更有效$example = 'AAA11111'; list($alpha,$numeric) =…