1

我有一个关于在 PHP 中创建递归函数的问题。在将 URL 除以“/”之后,有什么更好的方法来打印 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

我完全迷路了。

4

3 回答 3

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);
}
于 2013-03-12T19:44:02.717 回答
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);
于 2013-03-12T19:54:51.453 回答
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 ;)

于 2013-03-12T20:02:32.540 回答