imb*_*ery 4 php regex split date preg-match
我试图使用preg_match匹配PHP中的日期,拆分它并将其部分分配给数组,日期看起来像"20100930",这是我正在使用的代码:
// Make the tor_from date look nicer
$nice_from = $_POST['tor_from'];
$matches = array();
$ideal_from = '';
preg_match('/\d{4}\\d{2}\\d{2}\/', $nice_from, $matches, PREG_OFFSET_CAPTURE, 0);
// if (isset($matches[0])) $nice_from = $matches[0];
echo $matches[0];
echo "<br />";
echo $matches[1];
echo "<br />";
echo $matches[2];
echo "<br />";
echo $matches[3];
echo "<br />";
Run Code Online (Sandbox Code Playgroud)
我一直在使用:http: //php.net/manual/en/function.preg-match.php和PHP preg_match问题来制定关于如何做到这一点的想法,但是我没有运气让它发挥作用.任何帮助将不胜感激.
虽然正则表达式是不是真的在解析YYYYMMDD格式的日期一个很好的解决方案,让我们走过为什么你的模式是行不通的.
你的模式\d{4}\\d{2}\\d{2}\说:"匹配4位数(\d{4}),后跟反斜杠字符(\\),后跟字母d两次(d{2}),然后是另一个反斜杠(\\),最后是另外两个反转(d{2})."
你可能已经弄清楚了,你不想要双斜线!
\d{4}\d{2}\d{2}
Run Code Online (Sandbox Code Playgroud)
将匹配4位数字,后跟2位数字,然后是另外2位数字.
此外,您没有指定任何捕获组,因此您的子模式永远不会被填充.你的意思是:
(\d{4})(\d{2})(\d{2})
Run Code Online (Sandbox Code Playgroud)
请访问http://www.ideone.com/iAy7K查看此操作.请注意,在您的情况下,确实没有任何理由指定PREG_OFFSET_CAPTURE标志(返回每个匹配的位置)或0偏移量.