Php 斯特伦没有给出正确的输出

Php 斯特伦没有给出正确的输出,php,string,strlen,Php,String,Strlen,我有一个从数据库中检索到的字符串,我想计算字符串的长度,不带空格,但它显示的长度值更大(比实际计数大21个字符)。我删除了制表符和换行符以及php和html标记,但没有结果!我已经尝试了W3PHP参考上的几乎所有函数,但没有找到任何成功的方法。我还观察到,如果我不从数据库中检索值并按如下方式输入: $string=“我的字符串” 我得到了正确的长度,请帮助我。代码如下: if($res_tutor[0]['tutor_experience']){ $str = trim(stri

我有一个从数据库中检索到的字符串,我想计算字符串的长度,不带空格,但它显示的长度值更大(比实际计数大21个字符)。我删除了制表符和换行符以及php和html标记,但没有结果!我已经尝试了W3PHP参考上的几乎所有函数,但没有找到任何成功的方法。我还观察到,如果我不从数据库中检索值并按如下方式输入:

$string=“我的字符串”

我得到了正确的长度,请帮助我。代码如下:

if($res_tutor[0]['tutor_experience']){
        $str = trim(strip_tags($res_tutor[0]['tutor_experience']));
            $str = $this->real_string($str);
            $space = substr_count($str, ' ');
            $experience  = strlen($str) -  $space;


function real_string($str)
{
    $search  = array("\t","\n","\r\n","\0","\v");
    $replace = array('','','','','');
    $str = str_replace($search,$replace,$str);
    return $str;
}
这是数据库中的字符串,但正如您在上面看到的,我使用
strip\u tags()
删除了所有php和html标记:

我们鼓励您写一篇简短的自我介绍,介绍自己的教学经验和教学方法。您可以使用以下指南来帮助您写作。

.多年的教学经验
.授课学生总数
.Levels&;你教过的科目
.您的学生所取得的进步
.其他成就/经验(救济教学、辅导中心导师、院长名单、奖学金、公开演讲等)
音乐方面(在滨海广场的演出、在不同地点的演出等)

当我打印它时,它显示为:

<span class=\"experience_font\">You are encouraged to write a short description of yourself, teaching experience and teaching method. You may use the guidelines below to assist you in your writing.<br />
   <br />
   .Years of teaching experience<br />
   .Total number of students taught<br />
   .Levels &amp; subjects that you have taught<br />
   .The improvements that your students have made<br />
   .Other achievements/experience (Relief teaching, a tutor in a tuition centre, Dean&#39;s list, scholarship, public speaking etc.)<br />
   .For Music (Gigs at Esplanade, Your performances in various locations etc.)</span><br />
   &nbsp;</p>
我们鼓励您写一篇简短的自我介绍,介绍自己的教学经验和教学方法。您可以使用以下指南来帮助您写作。

.多年的教学经验
.授课学生总数
.Levels&;你教过的科目
.您的学生所取得的进步
.其他成就/经验(救济教学、辅导中心导师、院长名单、奖学金、公开演讲等)
音乐方面(在滨海广场的演出、在不同地点的演出等)

尝试使用mb_strlen。 它更精确

mb_strlen($str,"UTF-8") 
其中UTF-8是您的默认编码。。。 要删除所有自由空间,请尝试类似的操作

 $string = str_replace(array("\t","\n","\r\n","\0","\v"," "),"",$string);
 mb_strlen($string, "UTF-8");

@Svetilo,恕我直言,我只是想发布我的发现,你的str_替换工作非常出色,除了我仍然按照你当前的顺序输出错误的值之外,我发现下面的方法工作得完美无缺

$string = str_replace(array("\t","\r\n","\n","\0","\v"," "),'', $string);
mb_strlen($string, "UTF-8");
更改\r\n&\n使str\u replace不会从\r\n中删除\r\n,只留下一个\r\n


干杯。

如果您在浏览器中查看此内容,请确保其中没有任何html标记等内容。只是因为你看不到额外的字符意味着很少。有额外的标签,我已经删除了使用strip_tags()的标签,我不明白。。。我用您输入的输入运行了您的代码,它对我来说运行正常。这一定和你从db得到的有关。。。您需要添加更多的代码,尝试直接从db复制文本或类似的内容。是的,它与数据库相关,来自数据库的字符串的行为是这样的,当我打印它时,输出与我上面给出的字符串相同。数据库中的文本与上面粘贴的一样抱歉,不起作用,结果相同!我的编码是“ASCII”thanx,是的,兄弟,我已经试过了。
$string = str_replace(array("\t","\r\n","\n","\0","\v"," "),'', $string);
mb_strlen($string, "UTF-8");