preg_match for HTML 5 <time datetime =“xxxx-xx-xx”> </time>

时间:2012-01-24 16:05:00

标签: php regex preg-match

我如何制定模式,以便从时间标签中提取XXXX-XX-XX?

我在$ string中搜索的行是:

<time datetime="XXXX-XXX-XX" itemprop="birth">

我想提取部分:

XXXX-XX-XX

我有这个,但它不起作用:

preg_match('\<time datetime="d{4}-d{2}-d{2}"',$string,$date);
echo $date[0] . "<br />";

我发现正则表达式如此令人困惑......任何好的教程推荐都会很棒!感谢您的时间和帮助。

干杯

3 个答案:

答案 0 :(得分:3)

您需要使用\d代替d

此外,您需要将正则表达式括在一对分隔符中。

像:

preg_match('/\<time datetime="\d{4}-\d{2}-\d{2}"/',$string,$date);

答案 1 :(得分:2)

你忘记了分隔符,一些逃脱和一个捕获组:

preg_match('/<time datetime="(\d{4}-\d{2}-\d{2})"/',$string,$date);
echo $date[1] . "<br />";

答案 2 :(得分:1)

你的模式需要/../

preg_match('/\<time datetime="d{4}-d{2}-d{2}"/',$string,$date);

编辑: 看到蒂姆的回答,你也需要捕获组。