Php 允许字母、数字和某些字符
在表单中,用户可以输入一些文本。在验证php中,我想检查此文本是否只包含字母、数字和允许的特殊字符:Php 允许字母、数字和某些字符,php,Php,在表单中,用户可以输入一些文本。在验证php中,我想检查此文本是否只包含字母、数字和允许的特殊字符:,:;'“/*$@#&+- $pattern = '/^i'; $chars = ".,:;'\"/*$@#<>&+-"; $newString = htmlspecialchars($chars); if (!preg_match($pattern, $chars, $text)) $error = $error . "You can use only letters,
,:;'“/*$@#&+-
$pattern = '/^i';
$chars = ".,:;'\"/*$@#<>&+-";
$newString = htmlspecialchars($chars);
if (!preg_match($pattern, $chars, $text)) $error = $error . "You can use only letters, digits and [.,:;'\"/*$@#<>&+-]".'<br>';
$pattern='/^i';
$chars=“,:;”\"/*$@#&+-";
$newString=htmlspecialchars($chars);
如果(!preg_match($pattern,$chars,$text))$error=$error。“只能使用字母、数字和[,:;'\”/*$@#&+-]”
;
$error
变量将与表单一起发送回页面并显示在那里
我是否使用了错误的模式?无论我在输入框中键入什么,都会出现错误。以下是您的英文代码:
- 将$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....";
$chars=“.:;”\"/*$@#&+-";
如果(preg_match(“([^a-zA-Z0-9.preg_quote($chars)。”)”,$text))$error.=“您只能…”;
您的正则表达式就是/^i
。那不是一个有效的正则表达式。只有字母?只有哪些字母?你能在你的问题中以PHP字符串的形式提供吗?我明白你的意思。起初我想到了英文字母表中的字符,但最好允许所有字符,如Ł、ß、å等。@erdomester如果你要这样做,为什么不允许所有字符?@Vinit请不要编辑问题中的代码。谢谢你,谢谢!我修改它以允许空白:([^a-zA-Z0-9\
(对于新手:在9后面加下划线和空格)我的评论如何:“最好也允许其他字母,如Ł、ß、å等。”你有什么想法吗?我回复了你的评论。好吧。那么我想我处理字符编码的方式是错误的。文本必须是30个字符或更少,但当我键入某些特殊字符时,文本的长度会变长(例如,`变成€™)