与老涂一起写代码

PHP随机插入字符串到内容里面的逗号句号后面

admin 178 ℃ 0 条
PHP随机插入字符串到内容里面的逗号句号后面

随机插入字符串到指定内容后面,这个功能倒是简单,直接用替换字符串的方式就可以。或者先分割字符串,然后再拼接起来,也是可以的。


问题在于,现在要同时在几个字符串之后随机插入,这个就不容易实现了。


网上找资料的时候看到一个函数: 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);


这样就完美实现了随机插入。


发表评论 (已有0条评论)

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