【发布时间】:2011-08-17 21:33:30
【问题描述】:
正确用法是:/,,([,]+)?|^,|,$|\b,\b|\s,/
$comma[0] = '/,,([,]+)?/';
$comma[1] = '/^,/';
$comma[2] = '/,$/';
$comma[3] = '/\b,\b/';
$comma[4] = '/\s,/';
$analyst = preg_match($comma, $_POST['analyst'])
? mysql_real_escape_string($_POST['analyst']) : NULL;
我正在尝试从用户输入中检测逗号,每个正则表达式都已正确定义,但我不明白为什么它没有将它们传递到 if 语句中。
编辑:
如果我改变这个:
$analyst = preg_match('test', $_POST['analyst'])
? mysql_real_escape_string($_POST['analyst']) : NULL;
然后它起作用了,这没有任何意义。
【问题讨论】:
-
尝试阅读文档:php.net/preg_match——当然失败了,它不接受数组。一点也不奇怪或意外。
-
@Erik:人们会感到困惑,因为
preg_replace会。 -
不,Orbling,人们只是懒得看基本文档:(
-
一个有用的答案是尝试使用管道。 /,,([,]+)?|^,|,$|\b,\b|\s,|,/
-
只是出于好奇,您可能会尝试与
str_pos( $_POST['analyst'], ',' )匹配的东西不够用?
标签: php mysql regex preg-match