Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 允许字母、数字和某些字符_Php - Fatal编程技术网

Php 允许字母、数字和某些字符

Php 允许字母、数字和某些字符,php,Php,在表单中,用户可以输入一些文本。在验证php中,我想检查此文本是否只包含字母、数字和允许的特殊字符:,:;'“/*$@#&+- $pattern = '/^i'; $chars = ".,:;'\"/*$@#<>&+-"; $newString = htmlspecialchars($chars); if (!preg_match($pattern, $chars, $text)) $error = $error . "You can use only letters,

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

$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个字符或更少,但当我键入某些特殊字符时,文本的长度会变长(例如,`变成€™)