Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.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中使用strlen进行表单验证_Php_String_Validation_Strlen - Fatal编程技术网

在php中使用strlen进行表单验证

在php中使用strlen进行表单验证,php,string,validation,strlen,Php,String,Validation,Strlen,我有以下验证: if (empty($errors) === true) { if (strlen($_POST['Description']) > 250) { //strlen counts the number of bytes $errors[] = 'Your description must be less than 250 characters long'; } } 但是,如果用户输入的描述长度超过3

我有以下验证:

    if (empty($errors) === true) { 
        if (strlen($_POST['Description']) > 250) { //strlen counts the number of bytes
            $errors[] = 'Your description must be less than 250 characters long';
        }
    }

但是,如果用户输入的描述长度超过30个字符,则始终会显示此错误。我读到strlen返回的是字节数,而不是字符串中的字符数。我试过用mb_strlen获取字符长度,但这也不起作用。我觉得我在做一些明显愚蠢的事情,如果可以的话,请帮助我。

老实说,我不知道有任何编码使用8字节作为字符

我认为你的“$\u POST['Description']”可能不仅仅包含你想要的数据

做一个

看看它显示了什么

旁注:

if (strlen(trim($_POST['Description'])) > 250)
防止空白导致验证失败


还请注意,您必须指定mb_strlen的编码,因为发送的字符编码可能与内部编码不同。

什么是输入语言?你试过mb_stren吗?从php.net/mb_strlen如果你发现自己没有mb string函数并且无法轻松更改它,一个快速的黑客替换utf8字符的mb_strlen是使用一个打开utf8的PCRE正则表达式$strlen=preg_match_all(“/.{1}/us”,$utf8string,$dummy);这基本上是一个丑陋的黑客程序,它计算所有单字符匹配,我希望它在大字符串上的速度会非常慢。当我执行
var\u dump($\u POST['Description'])
时,请尝试此操作。我得到发布的描述,最后它会显示
(length=1584)
…当你在它周围放置标记时,你看到奇怪的东西了吗,还是还可以?
if (strlen(trim($_POST['Description'])) > 250)