解析 url 的最后一个子字符串


Parsing the last substring of the url

我想解析最后一个"/"之后的字符串。例如:

http://127.0.0.1/~dtm/index.php/en/parts/engine

解析"引擎".

我尝试使用正则表达式

执行此操作,但作为正则表达式的新手,我卡在解决方案附近。此外,这种模式似乎很容易被打破(/engine/会破坏它)。需要以某种方式使其更稳定。

$pattern = ' '/(.+^[^'/]?) ' ;
    /
  • 匹配/字符
  • .+ 匹配任何字符一次或多次
  • ^
  • [^/'' 排除 '' 字符

当前状态演示

你不需要正则表达式,不要让它变得复杂,只需使用它:

<?php
    $url = "http://127.0.0.1/~dtm/index.php/en/parts/engine";
    echo basename($url);
?>

输出:

engine

我建议您使用performatner函数而不是preg_match来执行此操作

例如 basename()

   $url = "http://127.0.0.1/~dtm/index.php/en/parts/engine";
   echo basename($url);

或爆炸()

  $parts = explode('/',$url);
  echo array_pop($parts);

您还可以同时使用 parse_url()、explode() 和 array_pop() 来实现您的目标。

<?php
$url = 'http://127.0.0.1/~dtm/index.php/en/parts/engine';
$parsed = parse_url($url);
$path = $parsed['path'];
echo array_pop(explode('/', $path));
?>

小提琴演示

这是什么吗?

$url = "http://127.0.0.1/~dtm/index.php/en/parts/engine";
$ending = end(explode('/', $url));

输出:

engine