本帖最后由 s51384 于 2012-03-13 15:49:56 编辑

解决方案 »

  1.   

    不是每次刷新不一样,是每个key的值都是从mysql随机替换来的。汗。。
      

  2.   

    我们用到str_ireplace()函数 不都是整篇替换的吗?我的意思就是可以做到 随机读一次mysql —> 替换一个key —> ...依次重复...  吗?
      

  3.   

    描述的模模糊糊的。 你让key随机不就行了。
      

  4.   


    好吧,是我嘴太笨了能耐心帮我看看吗?$key 不是随机的对象,大哥。还2颗星呢!
    str_ireplace()这个函数替换不是全部替换吗?我意思能实现找到一个{key}随机读取sql替换掉;然后再找下个,再随机读取,再替换OK?
      

  5.   

    如果$key是数组,$k = array_rand($key,1);用$k进行替换
      

  6.   


    “$key”它是文章里的一段文字,作为替换的对象 。规定要查找的值。
      

  7.   

    如果$key就一个值,那还需要随机替换?
    你可以将要替换的字段全部放入一个数组,再随机抽取。
      

  8.   


    dmtnewtons同学,没明白我的意思!我从头叙述一遍,请耐心听一下!一篇文字,凡是出现“你好”2个字,我要替换成“你们好”。用到的函数是:str_ireplace() ,对吧?这篇文字暂且给个变量$string;str_ireplace(“你好”,“你们好”,$string)这样子的替换是整篇替换,对吧?我现在想实现的是:出现的第一个你好我替换成“你们好1”;第二个“你好”,替换成“你们好2”……以此类推。关于上面我说的随机,意思是“你们好”是从mysql随机select出来的;实现上面的替换也是这个意思;每次都是随机替换。。
      

  9.   

    for($i=0;$i<5;$i++){
         $string=str_ireplace("你好","你们好$i",$string);
    }
      

  10.   

    而且#12楼我也说了,“你们好”是mysql随机取出来的一条数据,不好用for循环吧。
      

  11.   

    不是难倒大家了。是你没描述清楚。大家只能猜测。know??
      

  12.   


    别取笑我了!Newnew#12楼我已经说的很明白了!的确很难实现!如果2位大侠能帮忙最好了。谢谢了!我先做下试试!
      

  13.   

    我感觉你用正则来实现吧,php正则还是比较快的,php函数 preg_replace_callback,在替换部分自己在定义一个函数,里边写自己从数据库里随机出来的字符串
      

  14.   


    <?php 
    $str = "aaaaaaaaqycaaaaaaqycaaaaaaqycaaaaaaaaaaaaqycaaaaa";
    $sub_str = "qyc"; 
    $replace_str = "<a href='http://www.baidu.com'>qyc</a>"; 
    $arr[0] = 0; 
    $str1 = $str; 
    while(false !== stripos($str, $sub_str)){ 
    $num = stripos($str, $sub_str); 
    $k++; 
    if ($k == 1) 
    $arr[$k] = $num + $arr[$k-1]; 
    else 
    $arr[$k] = $num + $arr[$k-1] + count($arr[0]); 
    $str = substr($str , $num + count($sub_str)); 

    unset($arr[0]); 
    $ran = $arr[array_rand($arr)]; 
    $str1 = substr($str1,0,$ran).$replace_str.substr($str1,$ran+3);
    echo $str1;
    ?>是这个意思??
      

  15.   


    $str = "aaaaaaaaqycaaaaaaqycaaaaaaqycaaaaaaaaaaaaqycaaaaa";
    $sub_str = "qyc"; 
    $replace_str = "<a href='http://www.baidu.com'>qyc</a>";
    $str = ' '.$str.' ';
    $arr = explode($sub_str , $str);
    $ran = rand(0,count($arr)-2);
    $arr[$ran] = $arr[$ran].$replace_str.$arr[$ran+1];
    unset($arr[$ran+1]);
    echo implode($arr , $sub_str);这样好像更方便点。
      

  16.   

    是不是内容里面的关键字。如果内容$str里面有“你好”这个词的话,就高亮现实出来,之后做一个替换。我觉得应该是这样的原理。楼主是要代码是吧!
      

  17.   


    echo str_replace("你好","你们好","我是中国人,见到朋友就说,你好,你好"); 楼主输出看看。
    我是中国人,见到朋友就说,你们好,你们好
      

  18.   

    谢谢各位了。我昨天晚上自己已经解决了!特别感谢各位版主和bojimiyabojimiya 同学(给我启发)  。现贴上代码与大家共勉!需求阐述(后来回帖几位朋友还是没理解,所以再赘述下):一篇文字,找到要替换关键字keyword,逐一把它替换成数据表table的字段的随机一个值。每次替换的值都是随机的。也就是说,随机select一个值,替换一个keyword;再随机select一个值,再次进行替换下一个keyword;再次随机select一个值,再替换第三个keyword……依次类推。实现代码如下:$arr = explode("{keyword}", $str);     //把文章划为数组
    $k=0;
    $result=mysql_query("SELECT title FROM table  ");     //读数据库的该字段放进数组
    while($Rs=mysql_fetch_array($result)){ 
    $arr1[$k]=$Rs["title"];
    $k=$k+1;
    }
    if(count($arr)>1){                       //判断是否有关键词
    $str1="";
    for($t=0;$t<count($arr);$t++){           //按序替换
    $ran = rand(0,count($arr1)-1);           //随机数组数据
    $str1 = $str1.$arr[$t];
    if($t!=count($arr)-1)
    {$str1 = $str1." ".$arr1[$ran];}             //去末子段
    }
    $str=$str1;
    }
    echo $str;                                     //输出文字
    完毕!
      

  19.   

    楼主没明白我意思
    看代码吧
    <?php
    function rep1($matchs)
    {
            $arr = array('a','b','c','d');
            $flag = rand(0,3);
            $rep = $arr[$flag];
            return $rep;
    }
    $text = "dsa中dsa国dsa人dsa";
    $after = preg_replace_callback("/dsa/","rep1",$text);
    echo $after."\n";
    ?>