被加入了空格,删掉即可
观察到 meta 中是一样的乱码,所以就从 meta 中取了
$t = get_meta_tags('http://www.qgren.com/qigong/gongfa/15_30.shtml');
echo '乱码:', $s = $t['description'], PHP_EOL;
echo '还原:', str_replace(' ', '', $s);
乱码:阿难。有犯戒。彼于心解脱、慧解脱如实知。彼于所起犯戒无余灭、无余没、无余欲� 5敝侨耸そ煌恕N宜当巳宋そ帧W苑侨缋础4硕屑洹K芟ぶJ枪省0⒛选D锪咳巳硕 H松瞥锪咳巳硕 H顺锪咳巳恕
还原:阿难。有犯戒。彼于心解脱、慧解脱如实知。彼于所起犯戒无余灭、无余没、无余欲荆当知是人胜进不退。我说彼人为胜进分。自非如来。此二有间。谁能悉知。是故。阿难。莫筹量人人而龋人善筹量人人而玻人筹量人人

解决方案 »

  1.   

    $t = get_meta_tags('http://www.qgren.com/qigong/gongfa/15_30.shtml');
    $s = $t['description'];$n = strpos($s, '欲')+2;
    $t = substr($s, $n);
    echo bin2hex('尽。当'), PHP_EOL;
    echo bin2hex($t), PHP_EOL;$n = strpos($s, '而')+2;
    $t = substr($s, $n);
    echo bin2hex('取。人'), PHP_EOL;
    echo bin2hex($t), PHP_EOL;echo str_replace(' ', "\xa1\xa1", $s), PHP_EOL;echo bin2hex(' '); //再看看全角空格
    bea1a1a3b5b1
    be20a3b5b1d6aacac7c8cbcaa4bdf8b2bbcdcba1a3ced2cbb5b1cbc8cbceaacaa4bdf8b7d6a1a3d7d4b7c7c8e7c0b4a1a3b4cbb6fed3d0bce4a1a3cbadc4dccfa4d6aaa1a3cac7b9caa1a3b0a2c4d1a1a3c4aab3efc1bfc8cbc8cbb6f8c820a3c8cbc9c6b3efc1bfc8cbc8cbb6f8b220a3c8cbb3efc1bfc8cbc8cba1
    c8a1a1a3c8cb
    c820a3c8cbc9c6b3efc1bfc8cbc8cbb6f8b220a3c8cbb3efc1bfc8cbc8cba1
    阿难。有犯戒。彼于心解脱、慧解脱如实知。彼于所起犯戒无余灭、无余没、无余欲尽。当知是人胜进不退。我说彼人为胜进分。自非如来。此二有间。谁能悉知。是故。阿难。莫筹量人人而取。人善筹量人人而病。人筹量人人�
    a1a1
    很显然,你在处理文字时做了将全角空格替换成半角空格的处理
    这就是问题的根源!
      

  2.   


    还是有点乱码,人筹量人人。多了一个怪异的东东。我把你这段代码试过了,有点纳闷,纳闷的是
    echo str_replace(' ', "\xa1\xa1", $s);
    这段代码后面不输出东西,,这个怪异的东东就不会出现。
    反之,只要后面输出什么,比如你的代码,输出个PHP_EOL,就出现了。
    真的好奇怪啊