【问题标题】:Count textarea signs correct php mb_strlen计数 textarea 标志正确的 php mb_strlen
【发布时间】:2013-12-18 00:07:57
【问题描述】:
function countCharacterNoCK($contentVar, $maximumChars){

        $countThisString = strip_tags($contentVar);

        $umlaute = Array("/ä/","/ö/","/ü/","/Ä/","/Ö/","/Ü/","/ß/");
        $replace = Array("a","o","u","A","O","U","s");
        $countThisString1 = preg_replace($umlaute, $replace, $countThisString);

        $lenght = mb_strlen(html_entity_decode($countThisString1, ENT_QUOTES, 'UTF-8'));

        if($lenght < $maximumChars+1){
            return TRUE;
        }else{
            return $lenght;
        }
}

此功能无法按预期工作。问题是:我有一个&lt;textarea&gt;,我可以在其中按 Enter。

<textarea name="testvalue">
12345 1234
1234512345
</textarea>

如果我调用我的函数$test = countCharacterNoCK($_POST['testvalue'], 20);,它将返回“22”。

如何解决这个问题?我已经用strip_tags 尝试过,但它没有解决我的问题...我希望该功能像 MS Office (Word) 一样计数,但无法解决这个问题...任何提示?

【问题讨论】:

    标签: php entities strlen


    【解决方案1】:

    我猜它正在计算换行符'\n'的不可见字符。

    你应该先尝试修剪

    $temporarystring =trim($countThisString1);
    $lenght = mb_strlen(html_entity_decode($temporarystring, ENT_QUOTES, 'UTF-8'));
    

    【讨论】:

    • 谢谢,我刚刚发现:) 我想我会和你一起解决。非常感谢您的好先生。
    【解决方案2】:

    我搜索了一整天,现在在我提出问题后,我找到了解决方案:

    $umlaute = Array("/ä/","/ö/","/ü/","/Ä/","/Ö/","/Ü/","/ß/",**"~[\r\n]+~"**);
    $replace = Array("a","o","u","A","O","U","s",**""**);
    

    感谢大家阅读

    【讨论】:

      猜你喜欢
      • 2017-07-08
      • 2011-06-02
      • 2012-01-05
      • 2018-06-25
      • 1970-01-01
      • 1970-01-01
      • 2011-11-30
      • 1970-01-01
      • 2015-01-07
      相关资源
      最近更新 更多