我正在尝试使用 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 />";
我一直在使用: http://php.net/manual/en/function.preg-match.php和 PHP preg_match question制定关于如何做到这一点的想法,但是我没有运气让它发挥作用。任何帮助将不胜感激。
最佳答案
虽然正则表达式对于解析 YYYYMMDD 格式的日期来说并不是一个很好的解决方案,但让我们来看看为什么您的模式不起作用。
您的模式 \d{4}\\d{2}\\d{2}\
说:“匹配 4 位数字 (\d{4}
) ,后跟一个反斜杠字符 (\\
),然后是 字母 d 两次 (d{2}
),然后是另一个反斜杠 ( \\
),最后是另外两个 d (d{2}
)。”
您现在可能已经明白,您不需要双斜线!
\d{4}\d{2}\d{2}
将匹配 4 位数字,然后是 2 位数字,然后是另外 2 位数字。
此外,您没有指定任何 capturing groups ,因此您的子模式将永远不会被填充。你的意思可能是:
(\d{4})(\d{2})(\d{2})
请参阅 http://www.ideone.com/iAy7K 中的实际操作.请注意,在您的情况下确实没有任何理由指定 PREG_OFFSET_CAPTURE
标志(返回每个匹配项的位置)或 0
偏移量。
关于php - 约会的 Preg_match,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3834470/