<?php
$str = "第三,时尚理念日渐深入中国,在媒体对时尚潮流的推崇以及政府的支持下,中国民众的消费观念也逐渐革新,品牌意识加强,比如上海女装代理恒隆广场的LouisVuitton店里,90%消费者是中国人。因此,如果中国能诞生一批达到国际水准的奢侈品牌,必定不乏追崇者。但是奢侈品牌的创立需要一段时间的培养和认知,例如,日本的经济和商业都非常发达,又是全球第一大奢侈品消费国。";
$ad[1] = '<font color=red>哈</font>';
$ad[2] = '<font color=red>嘿</font>';
$ad[3] = '<font color=red>呼</font>';
$textlength = strlen($str);
$curpos = ($textlength >= 100) ? rand(30, 100) : ($textlength > 30 ? rand(30, $textlength) :$textlength);
$curadid = 1;
while($curpos < $textlength){
 $str = substr($str, 0, $curpos).$ad[$curadid].substr($str, $curpos, $textlength);
 $curpos += rand(20, 50) + strlen($ad[$curadid]);
 if($ad[$curadid + 1]) $curadid += 1;
}
echo $str;
?>各位路过的大虾们,小弟这段代码功能有所欠缺。望给与解决!问题:因为中文字节问题,总是回显乱码!

解决方案 »

  1.   

    把处理字符的函数换了, 加mb_前缀开头mb_strlen() mb_substr()
      

  2.   

    <?php
    $str = "第三,时尚理念日渐深入中国,在媒体对时尚潮流的推崇以及政府的支持下,中国民众的消费观念也逐渐革新,品牌意识加强,比如上海女装代理恒隆广场的LouisVuitton店里,90%消费者是中国人。因此,如果中国能诞生一批达到国际水准的奢侈品牌,必定不乏追崇者。但是奢侈品牌的创立需要一段时间的培养和认知,例如,日本的经济和商业都非常发达,又是全球第一大奢侈品消费国。";
    $ad[1] = '<font color=red>哈</font>';
    $ad[2] = '<font color=red>嘿</font>';
    $ad[3] = '<font color=red>呼</font>';
    $textlength = mb_strlen($str);
    $curpos = ($textlength >= 100) ? rand(30, 100) : ($textlength > 30 ? rand(30, $textlength) :$textlength);
    $curadid = 1;
    while($curpos < $textlength){
     $str = mb_substr($str, 0, $curpos).$ad[$curadid].mb_substr($str, $curpos, $textlength);
     $curpos += rand(20, 50) + mb_strlen($ad[$curadid]);
     if($ad[$curadid + 1]) $curadid += 1;
    }
    echo $str;
    ?>
      

  3.   


    嘿嘿嘿,翻了翻手册才知道要转换成 uft8 的编码。哈哈。谢谢大虾!!!
    谢谢