【问题标题】:PHP Recursively print each part of URLPHP递归打印URL的每一部分
【发布时间】:2013-03-12 19:38:22
【问题描述】:

我有一个关于在 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

我完全迷路了。

【问题讨论】:

  • 我不明白你所说的“状态”是什么意思,上面的案例究竟有什么实际用途?
  • 我将在数据库中搜索 URL 的每个“状态”以进行匹配。

标签: php function url recursion explode


【解决方案1】:
<?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);
}

【讨论】:

    【解决方案2】:
    <?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);
    

    【讨论】:

      【解决方案3】:

      对不起,它不是递归的,但我希望它对你有所帮助:

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

      【讨论】:

        猜你喜欢
        • 2018-04-10
        • 1970-01-01
        • 2017-03-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-22
        • 2016-06-23
        相关资源
        最近更新 更多