【发布时间】:2013-01-02 12:36:16
【问题描述】:
我有一个包含项目列表的 PHP 字符串,我想得到最后一个。
现实要复杂得多,但归结为:
$Line = 'First|Second|Third';
if ( preg_match( '@^.*|(?P<last>.+)$@', $Line, $Matches ) > 0 )
{
print_r($Matches);
}
我希望Matches['last'] 包含“第三”,但它不起作用。相反,我让 Matches[0] 包含完整的字符串,仅此而已。
我做错了什么?
请不要使用变通方法,我可以自己做,但我真的很想用 preg_match 做这个
【问题讨论】:
-
你能解释一下为什么它必须是正则表达式吗?如果分隔符只是管道,那么
end(explode('|', $line)真的会容易得多。或者也许是带有 strrpos 的 substr。 -
如果你只想要最后一部分,你可以做
substr(strrchr($Line, '|'), 1);不确定需要使用正则表达式的原因。你能详细说明一下为什么吗? -
它必须是正则表达式,因为实际的字符串比我的示例复杂得多。你是对的,我永远不会在这么简单的字符串上使用正则表达式。
标签: php preg-match