数据库里面有很多文章。文章里面有很多网址
我想在网址后面添加随机数,但是每个网址后面的随机数都要是不同的。我写了一个 能替换,但是结果是替换后每个网址后面的随机数都一样了for($i=1;$i<=60;$i++){
$duoyu=rand(1,111);
$res->fn_sql("update content set body=replace(body,'com','com$duoyu') where aid='$i'");
}请大侠帮忙

解决方案 »

  1.   

    /*
    function addRandNumber($matches) { return $matches[1].rand(1, 111); }
    for($i=1;$i<=60;$i++) {
    //$res->fn_sql("update content set body=replace(body,'com','com$duoyu') where aid='$i'");
    //SELECT `body` FROM `content` WHERE `aid` = $i ,先取出body字段,存入$body变量
    $body = preg_replace_callback(
    "|(com)+?|",
    'addRandNumber',
    $body);
    //SQL更新body字段
    }
    */
    //测试
    function addRandNumber($matches) { return $matches[1].rand(1, 111); }
    $body = "url_111_com\nurl_222_com\nurl_333_com";
    $body = preg_replace_callback(
    "|(com)+?|",
    'addRandNumber',
    $body);
    echo $body;//输出
    //url_111_com74nurl_222_com75nurl_333_com90
      

  2.   

    我算是看出来了,csdn高手总是那么几个
      

  3.   

    上面的代码还不能保证在一次循环中生成的随机数都是唯一的,要是需求比较严格的话,代码还需要修改一下:
    function addRandNumber($matches) {
    global $ar;
    $n = rand(1, 111);
    while(in_array($n, $ar)) $n = rand(1, 111);
    $ar[] = $n;
    return $matches[1].$n;
    }
    $body = "url_com<br />url_com<br />url_com";
    $ar = array();
    $body = preg_replace_callback(
    "|(com)+?|",
    'addRandNumber',
    $body);
      

  4.   

    jquery实现吧。很简单的。$("A").each(function(index, obj)
                {
                    $(obj).attr("href", $(obj).attr("href")+"?rand="+Math,random);
                })
      

  5.   


    我想说... 混CSDN久了,高手也变弱智了..