php str_replace无法转换中文逗号

<!--使用正则表达式检查URL合法性:validate_url.php-->
<?php
$str="一直以来,总觉得自己是一颗小草,一颗最不起眼的小草,没有个性,没有光芒。就像歌词中所唱:没有花香,没有树高,我

是一棵无人知道的小草。尽管我知道“尺有所长,寸有所短”的道理,可是,自卑的野草还是会在内心疯长,悒郁的阴霾还是会在心

间弥漫。有时候,负面情绪压在心头,宛如漫漫征程中的负重前行,心灵会很累,很累。";

echo "$str<br>";
$test = str_replace(',', ',',$str);
$test=str_replace('。','.',$str);

$arr=preg_split ('/[,.]/',$test);

echo '<pre>';
print_r($arr);
echo '</pre>';
// '"<font color=\"red\">"'-'-strtoupper("\1")-'-'"</font>"'
?>

可以正常转换,只不过你的变量误用了!

$test = str_replace(',', ',',$str);
$test=str_replace('。','.',$str);


第一句是将中文逗号转换为英文逗号,赋值给 $test

第二句呢?为什么后面的变量又是 $str,这样 $test 自然被再次赋值,仅仅替换了句号

只要将第二句的 $str 替换成 $test 即可

        $str="一直以来,总觉得自己是一颗小草,一颗最不起眼的小草,没有个性,没有光芒。就像歌词中所唱:没有花香,没有树高,我

        是一棵无人知道的小草。尽管我知道“尺有所长,寸有所短”的道理,可是,自卑的野草还是会在内心疯长,悒郁的阴霾还是会在心

        间弥漫。有时候,负面情绪压在心头,宛如漫漫征程中的负重前行,心灵会很累,很累。";

        echo "$str<br>";
        $test = str_replace(',', ',',$str);
        $test=str_replace('。','.',$test);

        $arr=preg_split ('/[,.]/',$test);

        echo '<pre>';
        print_r($arr);
        echo '</pre>';

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-01-24
1楼(nawsber_163)正解
请采纳1楼(nawsber_163)答案,绝不抢别人的劳动成果

$test = str_replace(',', ',',$str);
$test=str_replace('。','.',$str);

第一句替换后。$str的值不变。。替换后的结果赋值给了$test
导致第二句执行后 $test 只是替换了中文句号

修改方法

$test=str_replace('。','.',$str);
修改为
$test=str_replace('。','.',$test);本回答被网友采纳
第2个回答  2014-01-24
你要替换中文逗号 就要给中文 (,)
第3个回答  2014-01-24
使用mb系列函数处理