1

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

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

变量与$error表单一起发送回页面并显示在那里。

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

4

1 回答 1

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....";
于 2013-02-12T19:32:08.330 回答