php - 约会的 Preg_match

标签 php regex date split 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 />";

我一直在使用: http://php.net/manual/en/function.preg-match.phpPHP 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/

相关文章:

PHP post请求通过动态传递值

.net - 匹配 .NET 中未被另一个 x 转义的 x 或\

javascript - VSCode Javascript - 获取准确的本地新 Date() 值

Java - 日期构造函数接受日期字符串,但已弃用。尝试过替代品,但没有运气

php - 确定从哪里在PHP中调用函数

php - 带警告消息的 Laravel DB 查询

regex - 如何在 Linux 中指定进程名称中只获取进程 ID?

javascript - 处理 d3.js 轴上的日期

C# 和 PHP : Simple example of PHP Web Service used by C#

python - python的正则表达式