PHP REGEX是我的一个弱点,但我仍然设法通过在线工具完成一些事情。请考虑以下事项:
通常遵循此模式的主题字符串:1551 UTC 04 June 2012
我想提取“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将等于整个主题字符串。
答案 0 :(得分: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']));
答案 1 :(得分:0)
你说preg_replace,但我想你想使用preg_match()。这是正确的,你不想替换“04”,但你只是想把它变成变量$ day?如果是这样,请使用preg_match()。在你的描述中你说你只想捕获“04”部分,但你的正则表达式有很多捕获组(“()”中的任何东西都是一个捕获组,并将在你给preg_match的数组中返回。)