随机插入字符串到指定内容后面,这个功能倒是简单,直接用替换字符串的方式就可以。或者先分割字符串,然后再拼接起来,也是可以的。
问题在于,现在要同时在几个字符串之后随机插入,这个就不容易实现了。
网上找资料的时候看到一个函数: 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);
这样就完美实现了随机插入。
版权声明:本文发布于与老涂一起写代码 内容均来源于互联网 如有侵权联系删除
快来评论,快来抢沙发吧~