随机插入字符串到指定内容后面,这个功能倒是简单,直接用替换字符串的方式就可以。或者先分割字符串,然后再拼接起来,也是可以的。
问题在于,现在要同时在几个字符串之后随机插入,这个就不容易实现了。
网上找资料的时候看到一个函数: preg_split
可以根据正则分割内容,比如:
preg_split('/(,|。|;|:)/',$body);根据几个字符串分割内容,但是分割后就不能拼接了,从而不能使用这个函数。
我思来想去,发现其实转换一下就可以,根据字符串替换再转换就可以实现。代码如下,逐个说明:
1. 将要分割的字符串先替换成其他的字符串,并标记一下
$aa = str_replace([',','。',';',':','?'],['{S}{A}','{S}{B}','{S}{C}','{S}{D}','{S}{E}'],$body);2. 分割掉标记{S},这样就把每个符号的位置分割开来了
$body = explode('{S}',$aa);3. 插入字符串,这里我的是特殊字符串,请忽略
$ascii = ['','','','','','',''];
$randnum = rand(5,10);
for($i=1;$i<=$randnum;$i++){
$numx = rand(2,6);
$str = '';
for($ii=1;$ii<=$numx;$ii++){
$a = rand(0,6);
$str.= $ascii[$a];
}
// 计算数组个数
$n = count($body);
// 随机位置,并去除最后一位
$mm = rand(0,$n-1);
// 这里$str就是你要插入的字符串
$body[$mm].=$str;
}4. 用空格拼接起来
$body = implode('',$body);5. 再替换回原来的字符串,使之位置不变
$body = str_replace(['{A}','{B}','{C}','{D}','{E}'],[',','。',';',':','?'],$body);这样就完美实现了随机插入。
版权声明:本文发布于与老涂一起写代码 内容均来源于互联网 如有侵权联系删除

快来评论,快来抢沙发吧~