我有一个关于在PHP中创建递归函数的问题。在用“/”分隔后打印URL的所有状态有什么更好的方法?
PS:基本情况将基于URL 例如http://www.domain.com
我需要的是:
示例:
$url = 'http://www.domain.com/1/2/3/4';
function strip_states($url){
?????
}
strip_states();
// Result
// print -> http://www.site.com.br/1/2/3
// print -> http://www.site.com.br/1/2
// print -> http://www.site.com.br/1
// print -> http://www.site.com.br
我完全失去了。
答案 0 :(得分:2)
<?php
$url = 'http://www.domain.com/1/2/3/4';
$parts = explode('/', $url);
for ($i=count($parts); $i>=3; $i--) {
echo implode('/', $parts) . PHP_EOL;
array_pop($parts);
}
答案 1 :(得分:0)
<?php
$url = 'http://www.domain.com/1/2/3/4';
function strip_states($url)
{
$url_parts = parse_url($url);
$host = $url_parts['scheme'] . '://' . $url_parts['host'];
if(false === isset($url_parts['path'])) {
echo $host;
return;
}
foreach(explode('/', $url_parts['path']) as $key => $part)
{
if($key)
{
echo $host .= '/' . $part;
echo "<br/>";
}
}
}
strip_states($url);
答案 2 :(得分:0)
抱歉,它不是递归的,但我希望它能以某种方式帮助你:
$url = 'http://www.domain.com/1/2/3/4';
strip_url($url);
function strip_url($url)
{
$largo = strlen($url);
$aux = ""; $cont = 0;
echo $url." len $largo"."</br>";
for ($i=0; $i<$largo; $i++)
{
if($url[$i]=="/"){$cont++;}
$aux = $aux.$url[$i];
if($cont > 2 && $url[$i]=="/")
echo $aux."</br>";
}
echo $aux."</br>";
}
来自智利的Saludos;)