3

我有一个带有项目列表的 PHP 字符串,我想得到最后一个。

现实要复杂得多,但归结为:

$Line = 'First|Second|Third';
if ( preg_match( '@^.*|(?P<last>.+)$@', $Line, $Matches ) > 0 )
{
    print_r($Matches);
}

我希望Matches['last']包含“第三”,但它不起作用。相反,我让 Matches[0] 包含完整的字符串,仅此而已。我究竟做错了什么?

请不要解决方法,我可以自己做,但我真的很想和 preg_match 一起工作

4

4 回答 4

6

你有这个:

'@^.*|(?P<last>.+)$@'
     ^

...但我想您正在寻找文字 |

'@^.*\|(?P<last>.+)$@'
     ^^
于 2013-01-02T12:42:25.227 回答
2

如果您的语法总是有点相同,我的意思是使用|as 分隔符,如果您喜欢,您可以执行以下操作。

$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)];
于 2013-01-02T12:42:34.813 回答
2

只需使用:

 $Line = 'First|Second|Third' ;
   $lastword = explode('|', $line);
    echo $lastword['2'];
于 2013-01-02T12:43:07.677 回答
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
于 2016-12-20T19:28:18.307 回答