Php 正在分析url的最后一个子字符串

Php 正在分析url的最后一个子字符串,php,regex,Php,Regex,我想分析最后一个“/”后面的字符串。 例如: http://127.0.0.1/~dtm/index.php/en/parts/engine 解析“引擎” 我试着用Regexp来做,但由于我是Regexp的新手,我被困在解决方案附近。 此外,这种模式似乎很容易打破(/engine/将打破它)。需要设法使它更稳定一点 $pattern = ' \/(.+^[^\/]?) ' ; /匹配/char .+匹配任意字符一次或多次 ^[^/\Exclude\char 您不需要正则表达式,也不需要使

我想分析最后一个“/”后面的字符串。 例如:

http://127.0.0.1/~dtm/index.php/en/parts/engine
解析“引擎”

我试着用Regexp来做,但由于我是Regexp的新手,我被困在解决方案附近。 此外,这种模式似乎很容易打破(/engine/将打破它)。需要设法使它更稳定一点

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

您不需要正则表达式,也不需要使其复杂化,只需使用以下命令:

<?php

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

?>

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

例如basename()

或者爆炸

你也可以使用,和一起实现你的目标

<?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
engine

检查这一点:1,你的正则表达式中可能有一些空格,可能不应该存在。2(代码> ^ /代码>(一个类外)意味着字符串的开始,所以在正则表达式的中间没有任何意义。3。代码> + [^ \/] < /COD>指任何类型的字符(<代码> /< /代码>)。后跟一个可选的单个字符,该字符不是
/
(因此整个内容可以缩短为
+
)。也许正则表达式教程是一个好的开始。
basename
可能是你最好的选择。
explode
+
end
array\u pop
parse\u url
可能也很有用。真的根本不需要正则表达式我搜索了任何可以做到这一点的预制函数,但不知道为什么我没有找到关于basename的东西.谢谢你,伙计!这肯定比regexp容易多了。
$url = "http://127.0.0.1/~dtm/index.php/en/parts/engine";
$ending = end(explode('/', $url));
engine