从PHP字符串中提取正则表达式的最后一个实例


Extract last instance of a regular expression from string in PHP

我有一个URL是在以下结构:http://somewebsite.com/directory1/directory2/directory3…

我试图从这个url获得最后一个目录名,但url的深度并不总是恒定的,所以我不认为我可以使用一个简单的substr或preg_match调用-是否有一个函数来获得正则表达式匹配的最后一个实例从字符串?

直接使用:

basename( $url )

应该有理想的效果

Torben的回答是处理这种具体情况的正确方法。但为了后代,这里是如何获得正则表达式匹配的最后一个实例:

preg_match_all('/pattern/', 'subject', $matches, PREG_SET_ORDER);
$last_match = end($matches); // or array_pop(), but it modifies the array

$last_match[0]包含完整匹配,$last_match[1]包含第一个带括号的子模式,等等。

另一个有趣的点:您的正则表达式'/'/([^/])$/'应该按原样工作,因为$将其锚定到末尾。