1

PHP REGEX 是我的一个弱点,但我仍然设法使用在线工具完成一些事情。考虑以下:

通常遵循此模式的主题字符串:1551 UTC 2012 年 6 月 4 日

我想提取“04”并将其分配给 $day 使用下面的变量:

$day = preg_replace("/^([0-9]{4})\s([A-Z]{3})\s([0-9]{2})\s([A-Za-z]{3,})\s([0-9]{4})$/", "$3", $weather['date']);

这适用于以下网站: http ://sqa.fyicenter.com/Online_Test_Tools/Test_Regular_Expression_Search_Replace.php

但我无法让它在我的脚本中工作...... $day 将等于整个主题字符串。

4

2 回答 2

2

你的结果var_dump()string(38) "1551 UTC 04 June 2012 ". 它有 38 个字符,而应该只有 21 个。所以看起来字符串中有多个空格。

尝试trim()输入字符串并替换\s\s+以支持多个空格:

$day = preg_replace("/^([0-9]{4})\s+([A-Z]{3})\s+([0-9]{2})\s+([A-Za-z]{3,})\s+([0-9]{4})$/", "$3", trim($weather['date']));
于 2012-06-04T17:39:07.553 回答
0

你说 preg_replace,但我认为你想使用 preg_match()。您不想替换“04”但只想将其放入变量 $day 中是否正确?如果是这样,请使用 preg_match()。在您的描述中,您说您只想捕获“04”部分,但是您的正则表达式有许多捕获组(“()”中的任何内容都是捕获组,并将在您提供给 preg_match 的数组中返回)。

于 2012-06-04T17:39:02.013 回答