2013-12-17 31 views
0
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; 
     } 
} 

此功能不按预期方式工作。问题是:我有一个<textarea>,我可以按Enter键。计数textarea标志正确php mb_strlen

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

如果我打电话给我的函数$test = countCharacterNoCK($_POST['testvalue'], 20);稍后即归 “22”。

如何解决这个问题?我试过用strip_tags,但它并没有解决我的问题...我希望函数可以像MS Office(Word)一样计数,但不能解决这个问题...任何tipps?

回答

1

我想它是在计算新行'\ n'的隐形字符。

你应该尝试修剪:第一,而不是

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

谢谢,我刚刚发现了:)我想我会跟你解决。非常感谢你,先生。 –

+0

非常欢迎您!祝你有美好的一天! –

0

一整天我搜索,现在经过我问的问题我找到了解决办法:

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

感谢您阅读大家