【问题标题】:Remove all characters before last / in URL [duplicate]删除 URL 中最后一个 / 之前的所有字符 [重复]
【发布时间】:2015-11-03 12:41:29
【问题描述】:

我需要删除最后一个“/”之前的每个字符

这是我的网址:

http://www.example.com/highlights/cat/all-about-clothing/

而我只想拥有:

all-about-clothing

谢谢

【问题讨论】:

  • 你可以使用正则表达式来捕捉这个:http:\/\/www\.example\.com\/highlights\/cat\/(.*) regex101.com/r/tG5pA6/1

标签: php


【解决方案1】:

使用basename()

$str = 'http://www.example.com/highlights/cat/all-about-clothing/';
echo basename($str);
// Outputs: all-about-clothing

编辑:

另一种解决方案:

$str = 'http://www.example.com/highlights/cat/all-about-clothing/';
$path = pathinfo($str, PATHINFO_BASENAME);
echo "<br/>" . $path;

【讨论】:

  • 还要检查 pathinfo() 和 PATHINFO_BASENAME,因为 basename() 用于目录路径。
  • 好吧,算了。基本上pathinfo()basename() 做同样的事情。
  • @PatrikMayer,你是对的。我已经更新了我的答案并添加了您的建议。
  • 谢谢。也许请记住pathinfo() 的第二个参数。设置为PATHINFO_BASENAME 它直接返回基本名称。
【解决方案2】:

使用 PHP 的 parse_url() 函数。

编辑: basename()pathinfo() 是更简单的方法。

【讨论】:

    【解决方案3】:
    $str = 'http://www.example.com/highlights/cat/all-about-clothing/';
    $str = trim($str,'/');
    $str = explode('/',$str);
    echo $str = end($str);
    

    // 得到结果

    关于服装的一切

    【讨论】:

      【解决方案4】:
      <?php
      $url = "http://www.example.com/highlights/cat/all-about-clothing/";
      $url_path = parse_url($url, PHP_URL_PATH);
      $basename = pathinfo($url_path, PATHINFO_BASENAME);
      echo $basename;
      ?>
      

      【讨论】:

      • 这不对。 pathinfo() 想要 URL 作为第一个参数,而不是 parse_url 给出的数组。
      【解决方案5】:

      你也可以使用regex

      $match = [];
      $subject = 'http://www.example.com/highlights/cat/all-about-clothing/';
      $pattern = '/http:\/\/www\.example\.com\/highlights\/cat\/(.*)/';
      preg_match($pattern, $subject, $match);
      print_r($match);
      

      你可以看到结果here

      【讨论】:

        【解决方案6】:
        <?php
        $url = 'http://www.example.com/highlights/cat/all-about-clothing/';
        $basename =  split('/',$url);    
        echo $basename[5];
        ?>
        

        【讨论】:

        • 此代码适用于特定的 url,如果 url 具有不同数量的段,则会失败。
        【解决方案7】:

        上述大多数解决方案都专注于确切的示例 URL, 请小心,好像额外的参数被添加到字符串的末尾, 你可能会得到错误的结果:

        http://www.example.com/highlights/cat/all-about-clothing/?page=1 http://www.example.com/highlights/cat/all-about-clothing/item/1

        要缓存域名后的第三个“目录”,而忽略URL的其余部分,可以使用以下代码:

        $url = "http://www.example.com/highlights/cat/all-about-clothing/item/1";
        
        $url_path = parse_url($url, PHP_URL_PATH); #  /highlights/cat/all-about-clothing/item/1
        
        $dirs = explode('/', $url_path); # Array([0] =>"", [1]=>"highlights", [2]=>"cat", [3]=>"all-about-clothing", [4]=>"item", [5]=>"1") 
        
        echo $dirs[3]; # all-about-clothing
        

        【讨论】:

          猜你喜欢
          • 2017-04-12
          • 2021-11-29
          • 2013-04-23
          • 1970-01-01
          • 1970-01-01
          • 2016-08-09
          • 1970-01-01
          • 2013-03-16
          • 2012-03-08
          相关资源
          最近更新 更多