1

我不知道如何为我的 preg_replace 模式编写正确的模式。
我的情况是这样的:我有一个 URL,让我们假设:

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

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

first/second/third

此刻,我以这种方式解决了:

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

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

4

2 回答 2

4

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

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

正则表达式如下所示:

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

一样长,稍微有点混乱。

于 2013-04-20T16:10:28.447 回答
0

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

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

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

preg_replace("/.*?$", "", $url)
于 2013-04-20T16:09:50.563 回答