以“0”开头的4位数字串中的位置;20〃;


Position in string of 4 digits number begining with "20"

我有一个字符串:

$string = "Something here 2014 another text here";

我需要检测以"20"开头的前4位数字的位置。

因此,该示例的结果将是$字符串的第15个字符。

既然你已经用你尝试过的代码发表了评论,我现在很乐意正确回答你的问题:(谢谢你先尝试!

您的尝试:

preg_match('/20'd'd/', "Something here 2014 another text here",
     $matches, PREG_OFFSET_CAPTURE);

是绝对正确的,但是正如您正确指出的,它也会匹配20140(实际上12014也会匹配(。

要修复这种行为,可以添加单词边界,因为数字算作单词字符。您的正则表达式变为:

'/'b20'd'd'b/'

这将确保在您的目标四位数之前或之后没有数字(或字母(:(

那。。。

$needle = "20";
$pos = strpos($string , $needle);

编辑:根据请求,从这个中获取字符串的方法

$date = substr ($string , $pos , 4 ]);