允许字母,数字和某些字符

时间:2013-02-12 19:27:17

标签: php

在表单中,用户可以输入一些文本。在验证php中,我想检查此文本是否仅包含字母,数字和允许的特殊字符:.,:;'"/*$@#<>&+-

$pattern = '/^i';
$chars = ".,:;'\"/*$@#<>&+-";
$newString = htmlspecialchars($chars);
if (!preg_match($pattern, $chars, $text))   $error = $error . "You can use only letters, digits and [.,:;'\"/*$@#<>&+-]".'<br>';

$error变量发送回带有表单的页面并显示在那里。

我使用错误的模式吗?无论我在输入框中输入什么,我都会收到错误。

1 个答案:

答案 0 :(得分:3)

这是您的英文代码:

  • 将$ pattern设置为'/ ^ i'
  • 将$ chars设置为允许的字符列表
  • 将$ newString设置为$ chars
  • 的HTML编码版本
  • 将'/ ^ i'与您的字符列表匹配,并将匹配项存储在$ text变量
  • 如果匹配失败,则显示错误消息

嗯,你的问题应该是显而易见的。 /^i不是有效的正则表达式,如果它是在文本的开头寻找文字i,那就是它。

这就是我认为你的意思:

$chars = ".:;'\"/*$@#<>&+-";
if( preg_match("([^a-zA-Z0-9".preg_quote($chars)."])",$text)) $error .= "You can only....";