我正在构建一个处理某些事务的应用程序,其描述如下:
现金bnkm aug09:bt phone / a @ 19:10
我需要使用preg_match使用正则表达式从这些字符串中提取时间。 我写了一个可以在这个网站上运行的正则表达式:
但不是在我的代码中,因为给出了Warning: preg_match(): Unknown modifier '@'
错误。
我正在使用的正则表达式为:/@\d\d.\d\d/
,对preg_match的调用如下:
$matches = array();
if (preg_match('/'.'/@\d\d.\d\d/'.'/', 'cash bnkm aug09 : bt phone / a@19:10', $matches) === 1) {
//Carry out trigger
echo 'yes';
} else {
echo 'no';
}
基本上它似乎在@
符号上窒息 - 我似乎无法逃脱。
我对正则表达式很新,但找不到@
作为特殊字符使用的任何描述,所以假设它将用于测试字符串而不是改变字符串的测试方式
如何解决此问题的任何帮助将不胜感激。
答案 0 :(得分:2)
试试这个:
if (preg_match('/@\d\d:\d\d/', 'cash bnkm aug09 : bt phone / a@19:10', $matches) === 1) {
//Carry out trigger
echo 'yes';
print_r($matches);//Array ( [0] => @19:10 )
} else {
echo 'no';
}
在你的模式中有两个额外的斜杠:
'/'.'/@\d\d.\d\d/'.'/'
^-- ^--
如果@
未用作分隔符,则无需转义
答案 1 :(得分:0)
preg_match("/\@\d\d:\d\d/ims", "<input string>", $matches)
使用\
转义特殊字符,@
是分隔符。