关于随机从数据库读取数据并逐个替换的问题 本帖最后由 s51384 于 2012-03-13 15:49:56 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不是每次刷新不一样,是每个key的值都是从mysql随机替换来的。汗。。 我们用到str_ireplace()函数 不都是整篇替换的吗?我的意思就是可以做到 随机读一次mysql —> 替换一个key —> ...依次重复... 吗? 描述的模模糊糊的。 你让key随机不就行了。 好吧,是我嘴太笨了能耐心帮我看看吗?$key 不是随机的对象,大哥。还2颗星呢!str_ireplace()这个函数替换不是全部替换吗?我意思能实现找到一个{key}随机读取sql替换掉;然后再找下个,再随机读取,再替换OK? 如果$key是数组,$k = array_rand($key,1);用$k进行替换 “$key”它是文章里的一段文字,作为替换的对象 。规定要查找的值。 如果$key就一个值,那还需要随机替换?你可以将要替换的字段全部放入一个数组,再随机抽取。 dmtnewtons同学,没明白我的意思!我从头叙述一遍,请耐心听一下!一篇文字,凡是出现“你好”2个字,我要替换成“你们好”。用到的函数是:str_ireplace() ,对吧?这篇文字暂且给个变量$string;str_ireplace(“你好”,“你们好”,$string)这样子的替换是整篇替换,对吧?我现在想实现的是:出现的第一个你好我替换成“你们好1”;第二个“你好”,替换成“你们好2”……以此类推。关于上面我说的随机,意思是“你们好”是从mysql随机select出来的;实现上面的替换也是这个意思;每次都是随机替换。。 for($i=0;$i<5;$i++){ $string=str_ireplace("你好","你们好$i",$string);} 而且#12楼我也说了,“你们好”是mysql随机取出来的一条数据,不好用for循环吧。 不是难倒大家了。是你没描述清楚。大家只能猜测。know?? 别取笑我了!Newnew#12楼我已经说的很明白了!的确很难实现!如果2位大侠能帮忙最好了。谢谢了!我先做下试试! 我感觉你用正则来实现吧,php正则还是比较快的,php函数 preg_replace_callback,在替换部分自己在定义一个函数,里边写自己从数据库里随机出来的字符串 <?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;?>是这个意思?? $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);这样好像更方便点。 是不是内容里面的关键字。如果内容$str里面有“你好”这个词的话,就高亮现实出来,之后做一个替换。我觉得应该是这样的原理。楼主是要代码是吧! echo str_replace("你好","你们好","我是中国人,见到朋友就说,你好,你好"); 楼主输出看看。我是中国人,见到朋友就说,你们好,你们好 谢谢各位了。我昨天晚上自己已经解决了!特别感谢各位版主和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; //输出文字完毕! 楼主没明白我意思看代码吧<?phpfunction 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";?> 用户名不存在是怎么回事儿 高分求 symfony 站内信 源代码 参考 如何刷新页面 php+sql server分页技术? 2003+iis无法发送SMTP邮件 ldap 連接active directory問題 50分求人帮忙,在线等待 PHP开发人员招聘 我用session_set_save_handler()把session存到数据库中了,可是一设置过期时间为1个小时,可是我关闭浏览器,再打开该页面,却还要登陆 请教一下联合查询. PHP Mysql问题 求助:关于php或正则截取字符串问题
好吧,是我嘴太笨了能耐心帮我看看吗?$key 不是随机的对象,大哥。还2颗星呢!
str_ireplace()这个函数替换不是全部替换吗?我意思能实现找到一个{key}随机读取sql替换掉;然后再找下个,再随机读取,再替换OK?
“$key”它是文章里的一段文字,作为替换的对象 。规定要查找的值。
你可以将要替换的字段全部放入一个数组,再随机抽取。
dmtnewtons同学,没明白我的意思!我从头叙述一遍,请耐心听一下!一篇文字,凡是出现“你好”2个字,我要替换成“你们好”。用到的函数是:str_ireplace() ,对吧?这篇文字暂且给个变量$string;str_ireplace(“你好”,“你们好”,$string)这样子的替换是整篇替换,对吧?我现在想实现的是:出现的第一个你好我替换成“你们好1”;第二个“你好”,替换成“你们好2”……以此类推。关于上面我说的随机,意思是“你们好”是从mysql随机select出来的;实现上面的替换也是这个意思;每次都是随机替换。。
$string=str_ireplace("你好","你们好$i",$string);
}
别取笑我了!Newnew#12楼我已经说的很明白了!的确很难实现!如果2位大侠能帮忙最好了。谢谢了!我先做下试试!
<?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;
?>是这个意思??
$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);这样好像更方便点。
echo str_replace("你好","你们好","我是中国人,见到朋友就说,你好,你好"); 楼主输出看看。
我是中国人,见到朋友就说,你们好,你们好
$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; //输出文字
完毕!
看代码吧
<?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";
?>