1

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

私は完全に迷っています。

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

申し訳ありませんが、再帰的ではありませんが、何らかの形で役立つことを願っています:

$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>"; 


}

チリのサルードス ;)

于 2013-03-12T20:02:32.540 に答える
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 に答える