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

时间:2015-01-07 14:06:23

标签: php regex

我想在最后一个“/”之后解析字符串。 例如:

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

解析“引擎”。

我尝试用Regexp做,但是作为regexp的新手,我在解决方案附近。 此模式似乎很容易破解(/ engine /会破坏它)。需要以某种方式使它更稳定。

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

Demo of the current state

4 个答案:

答案 0 :(得分:5)

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

<?php

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

?>

输出:

engine

答案 1 :(得分:1)

我建议您使用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);

答案 2 :(得分:1)

您还可以同时使用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));
?>

PhpFiddle Demo

答案 3 :(得分:0)

这是什么东西?

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

输出:

engine