【问题标题】:PHP Equivalent to Perl's URI::URLPHP 等价于 Perl 的 URI::URL
【发布时间】:2009-05-27 13:51:34
【问题描述】:

我正在重写我近 8 年前用 PHP 编写的基于 Perl 的网络爬虫。我在 perl 中使用了非常方便的 URI::URL 模块来执行以下操作:

$sourceUrl = '/blah.html';
$baseHost = 'http://www.example.com';
my $url = URI::URL->new($sourceUrl, $baseHost);
return $url->abs;

返回:'http://www.example.com/blah.html'

PHP 中的 parse_url 函数非常方便,但还有什么更强大的吗?具体可以提供上述功能的东西吗?

【问题讨论】:

  • 以上功能由“.”给出字符串连接运算符。也许这不是展示您需要的最佳示例代码。

标签: php url


【解决方案1】:

也许Zend_Uri 就是您要找的东西?

【讨论】:

  • 绝对有希望,但似乎仍然没有那么聪明和灵活。
【解决方案2】:
print $baseHost . $sourceURL;

我错过了什么吗?你的方式似乎不必要地过于复杂了。

【讨论】:

  • 真的不是。 URI 对象是一种祝福(perl 双关语)。当您在构建后想要修改部件时拥有它真是太好了,比如更改方案、参数甚至身份验证。使用规范等简化/更正 url。抽象和封装总是值得付出努力的。既然我身处非常不幸的 PHP 世界,这些就是我从 Perl 中怀念的东西。
  • 也许我没有做足够的“企业”的东西,但在 PHP 的多年里,我还没有遇到过你发布的额外代码行值得付出努力的情况。我只是创建一个 baseurl() 函数,它提供方案、参数、身份验证等并连接(或使用已经为我做这些的框架)。
【解决方案3】:

我在 PEAR 档案中进行了一些搜索,我对 URI::URL 的初步估计是 Net_URL2。也许你想试一试?

【讨论】:

  • Net_URL2 很好,虽然它似乎不能正确处理事情。即,从 'page.html' 的非完全限定 URL 开始,我检查 $url->hostname 以查看它是否为空(它是),然后执行 $url->setHost('www.example.com' ) 并且由于某种原因 $url->getUrl() 返回 'www.example.compage.html' ...它只是不够聪明。我即将采用 URI::URL 并将其转换为 PHP。 :)
  • 如果你这样做了,那肯定是对 PHP 社区的一个很好的贡献!
猜你喜欢
  • 1970-01-01
  • 2012-05-23
  • 1970-01-01
  • 2010-09-18
  • 1970-01-01
  • 2011-03-08
  • 1970-01-01
  • 2010-10-22
  • 2023-04-10
相关资源
最近更新 更多