preg_rerest的正则表达式模式,包含最后一个斜杠和所有后续字符

时间:2013-04-20 16:06:15

标签: php regex

我无法弄清楚如何为preg_replace模式编写正确的模式 我的情况是这样的:我有一个URL,让我们假设:

$url = "first/second/third/fourth"

现在,我需要删除最后一个“/”以及之后的所有字符。所以我的结果应该是这样的:

first/second/third

这一刻我解决了这个问题:

$result = substr($url, 0, (strrpos($url, "/")));

但是我知道应该有正确的模式写入我的preg_replace 有什么建议吗?

2 个答案:

答案 0 :(得分:4)

使用你拥有的东西;它简单而有效。较少的括号可以使它看起来不那么复杂:

$result = substr($url, 0, strrpos($url, '/'));

正则表达式如下所示:

$result = preg_replace('#/[^/]*$#', '', $url);

同样长,稍微有些混乱。

答案 1 :(得分:0)

匹配斜杠,后跟零个或多个不是斜杠的字符,后跟字符串的结尾:

preg_replace("/[^/]*$", "", $url)

或者,使用非贪婪的匹配(*?),这也应该有效:

preg_replace("/.*?$", "", $url)