我不知道如何为我的preg_replace模式编写正确的模式。
我的情况是这样的:我有一个URL,假设是:
$url = "first/second/third/fourth"
现在,我只需要删除最后一个"/"和之后的所有字符。所以结果应该是这样的:
first/second/third
此刻我是这样解决的:
$result = substr($url, 0, (strrpos($url, "/")));
但是我知道应该有正确的模式写入我的preg_replace.
任何建议吗?
量入为出;它既简单又有效。更少的括号可以使它看起来不那么复杂:
$result = substr($url, 0, strrpos($url, '/'));
正则表达式看起来像这样:
$result = preg_replace('#/[^/]*$#', '', $url);
和
一样长,只是更容易混淆。
匹配一个斜杠,后面跟着零个或多个非斜杠的字符,后面跟着字符串的结尾:
preg_replace("/[^/]*$", "", $url)
或者,使用非贪婪匹配(*?
),这也应该工作:
preg_replace("/.*?$", "", $url)