str_replace函数的问题,在线等
php页面中:下面的代码,是我想把部分 词样式设置成红色$str="我们都是中国的业内的人民";
function change_red($keyword,$str)
{
$replace = "<span style='color:#CC0000;'>".$keyword."</span>";
return str_replace($keyword,$replace,$str);
}
echo change_red('中国',$str).'<br>';//成功 
echo change_red('的',$str);//不成功
问:1 上面的 的 字为什么设置不成功
    2  有没有其它的方法可以设置成红色
thanks

解决方案 »

  1.   

    function ch_color_keyword($str = '', $keyword = '', $color = 'red', $link_url = '#'){
    if(!$str){echo '参数1不能为空(父字符串)';exit;}
    else if(!$keyword){echo '参数2不能为空(关键词)';exit;}
    $str = str_replace($keyword, '<a href="'.$link_url.'" style="color:'.$color.';" target="_blank">'.$keyword.'</a>', $str);
    return $str;
    }
    $str = 'abcdefgabcsafasf';
    echo ch_color_keyword($str, 'a', 'red', 'http://www.baidu.com');
    刚做的
      

  2.   

    多谢楼上的
    1 楼,
    你用你刚写的函数
    这样试下
    $str = '我们都是中国的业内的人民';
    echo ch_color_keyword($str, '的', 'red', 'http://www.baidu.com');
    也是不成功的
      

  3.   

    你用的GB2312是吧?
    用UTF-8就不会有问题。
    这个问题主要在GB2312编码下,“内”和“的”的编码冲突。
    简单点说就是“内”的编码里前字节或后字节包含了和“的”字符一样的字节编码
      

  4.   

    把内字去掉就会正常。
    最好换成UTF-8编码的。不知道其他人有没有对于这种冲突更好的解决方式
      

  5.   

    incov编码啊..,,两个都转成utf-8的替换
      

  6.   

    function ch_color_keyword($str = '', $keyword = '', $color = 'red', $link_url = '#'){
    if(!$str){echo '参数1不能为空(父字符串)';exit;}
    else if(!$keyword){echo '参数2不能为空(关键词)';exit;}
    if(strlen('我') == 3){
    $str = iconv('utf-8', 'gbk', $str);
    }
    $str = str_replace($keyword, '<a href="'.$link_url.'" style="color:'.$color.';" target="_blank">'.$keyword.'</a>', $str);
    return $str;
    }
    $str = '我们都是中国的业内的人民';
    echo ch_color_keyword($str, '内', 'red', 'http://www.baidu.com');结果:我们都是中国的业的人民
      

  7.   

    function ch_color_keyword($str = '', $keyword = '', $color = 'red', $link_url = '#'){
    if(!$str){echo '参数1不能为空(父字符串)';exit;}
    else if(!$keyword){echo '参数2不能为空(关键词)';exit;}
    if(strlen('我') == 3){
    $str = iconv('utf-8', 'gbk', $str);
    $keyword = iconv('utf-8', 'gbk', $keyword);
    }
    $str = str_replace($keyword, '<a href="'.$link_url.'" style="color:'.$color.';" target="_blank">'.$keyword.'</a>', $str);
    return $str;
    }
    $str = '我们都是中国的业内的人民';
    echo ch_color_keyword($str, '内', 'red', 'http://news.baidu.com');
      

  8.   

    9楼的,
    为什么要用这行
     if(strlen('我') == 3)...
      

  9.   

    9楼的,
    为什么要用这行
     if(strlen('我') == 3)...
      

  10.   

    判断页面编码格式 一个汉字utf-8是3长度,gbk是2
      

  11.   

     一个汉字utf-8是3长度,gbk是2