我有一个带有项目列表的PHP字符串,我想得到最后一个。
现实情况要复杂得多,但归结为:
$Line = 'First|Second|Third';
if ( preg_match( '@^.*|(?P<last>.+)$@', $Line, $Matches ) > 0 )
{
print_r($Matches);
}
我希望Matches['last']
包含'Third',但它不起作用。相反,我得到Matches [0]来包含完整的字符串而没有别的。
我做错了什么?
请不要解决,我可以自己做,但我真的想让这个与preg_match一起工作
答案 0 :(得分:6)
你有这个:
'@^.*|(?P<last>.+)$@'
^
...但我想您正在寻找文字 |
:
'@^.*\|(?P<last>.+)$@'
^^
答案 1 :(得分:2)
如果你的语法总是有点相同,那么我的意思是使用|
作为分隔符,如果你愿意,可以执行以下操作。
$Line = 'First|Second|Third' ;
$line_array = explode('|', $Line);
$line_count = count($line_array) - 1;
echo $line_array[$line_count];
或
$Line = 'First|Second|Third' ;
$line_array = explode('|', $Line);
end($line_array);
echo $line_array[key($line_array)];
答案 2 :(得分:2)
只需使用:
$Line = 'First|Second|Third' ;
$lastword = explode('|', $line);
echo $lastword['2'];
答案 3 :(得分:0)
获取最后一场比赛的PHP preg_match示例:
<?php
$mystring = "stuff://sometext/2010-01-01/foobar/2016-12-12.csv";
preg_match_all('/\d{4}\-\d{2}\-\d{2}/', $mystring, $matches);
print_r($matches);
print("\nlast match: \n");
print_r($matches[0][count($matches[0])-1]);
print("\n");
?>
打印返回的整个对象和最后一个匹配:
Array
(
[0] => Array
(
[0] => 2010-01-01
[1] => 2016-12-12
)
)
last match:
2016-12-12