3

我很难将正确的表达式组合在一起,因此它会拒绝除字母、句点、撇号、空格和连字符之外的所有内容。

到目前为止,这适用于除撇号之外的所有内容,我试图用单引号和双引号“\”来逃避它,但无济于事。

  if(!preg_match("/^[a-zA-Z'. -]+$/",$_POST['name']))
  {
      $error_name="The name you entered is invalid.";
  }
 //obrien - pass
 //o'brien - fail
 //Dr. OBrien - pass
 //Dr. O'Brien - fail

除了没有撇号清除它之外,这非常有效。

4

3 回答 3

3

这是我能够想出的一个了不起的名称,我认为它应该能够与大多数同时具有连字符、撇号、空格等的名称一起使用。

    if(!preg_match('/^([a-zA-Z]+[\'-]?[a-zA-Z]+[ ]?)+$/', $string))
于 2014-10-25T00:03:36.970 回答
3

问题最终是在我的godaddy帐户上无法访问的php.ini中,必须启用addslashes。以下使其工作。感谢 Sergey 引导我思考服务器可能会对发布的数据做什么。

if(!preg_match("/^[a-zA-Z'. -]+$/", stripslashes($_POST['name']))
{
whatever error message
}
于 2013-09-28T01:25:02.573 回答
2
于 2013-09-27T17:29:49.120 回答