Strlen不会正确计算字符数

时间:2014-12-10 18:36:27

标签: php

这是我的代码

$devmsg = $db->real_escape_string($_POST['devmsg']);
if(strlen($devmsg) <= 200) {
do something
} else {
do some other thing
}

当我添加消息时,一些特殊的字符,例如“(”“”“”“”“”“”{“等等strlen()计算错误..如果我的消息是~160-180个字符长且有特殊字符在其中,if运算符只返回false并转到其他..我认为问题在这里$db->real_escape_string然后删除它但仍然得到相同的结果。

1 个答案:

答案 0 :(得分:3)

可能是UTF-8问题。

首先尝试通过utf8_decode()传递文本:

<?php 
$length = strlen(utf8_decode($s)); 
?> 

utf8_decode()将不在ISO-8859-1中的字符转换为&#39;?&#39;,为了计算,这些字符非常正常。