【发布时间】:2011-04-14 19:08:40
【问题描述】:
我是 perl 新手,但想知道是否有人知道类似于以下 PHP 版本的脚本,效果很好!
private function resolve_href ( $base, $href ) {
if (!$href)
return $base;
$rel_parsed = parse_url($href);
if (array_key_exists('scheme', $rel_parsed))
return $href;
$base_parsed = parse_url("$base ");
if (!array_key_exists('path', $base_parsed))
$base_parsed = parse_url("$base/ ");
if ($href{0} === "/")
$path = $href;
else
$path = dirname($base_parsed['path']) . "/$href";
$path = preg_replace('~/\./~', '/', $path);
$parts = array();
foreach ( explode('/', preg_replace('~/+~', '/', $path)) as $part ) {
if ($part === "..")
array_pop($parts);
elseif ($part!="")
$parts[] = $part;
}
$dir = ( ( array_key_exists('scheme', $base_parsed)) ? $base_parsed['scheme'] . '://' . $base_parsed['host'] : "" ) . "/" . implode("/", $parts);
return str_replace( "\/", '', $dir );
}
非常感谢任何帮助
【问题讨论】:
-
我们都清楚了,这个函数到底是做什么的?什么是输入,什么是输出?
-
$base = http://foo.com/bar/poo/ $href = ../foobar -
哇 PHP->Perl 转换器,大众变得聪明了吗?
-
大众很聪明,这就是他们学习 PHP 的原因。然而,“知道”的人使用更高效的语言,例如 perl。