我无法弄清楚如何为preg_replace模式编写正确的模式 我的情况是这样的:我有一个URL,让我们假设:
$url = "first/second/third/fourth"
现在,我需要删除最后一个“/”以及之后的所有字符。所以我的结果应该是这样的:
first/second/third
这一刻我解决了这个问题:
$result = substr($url, 0, (strrpos($url, "/")));
但是我知道应该有正确的模式写入我的preg_replace 有什么建议吗?
答案 0 :(得分:4)
使用你拥有的东西;它简单而有效。较少的括号可以使它看起来不那么复杂:
$result = substr($url, 0, strrpos($url, '/'));
正则表达式如下所示:
$result = preg_replace('#/[^/]*$#', '', $url);
同样长,稍微有些混乱。
答案 1 :(得分:0)
匹配斜杠,后跟零个或多个不是斜杠的字符,后跟字符串的结尾:
preg_replace("/[^/]*$", "", $url)
或者,使用非贪婪的匹配(*?
),这也应该有效:
preg_replace("/.*?$", "", $url)