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

943 ℃ 0 条
内容摘要本文介绍用 PHP 在文章内容的逗号、句号等标点符号后随机插入字符串的实现方法,通过打散字符串、按标点位置随机拼接的方式完成改写,可用于伪原创处理、关键词自然分布等场景,文中附完整代码与可自由调节的参数说明,方便按实际需求定制效果。
PHP随机插入字符串到内容里面的逗号句号后面

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

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

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

网上找资料的时候看到一个函数: preg\_split

可以根据正则分割内容,比如:

preg_split('/(,|。|;|:)/',$body);

根据几个字符串分割内容,但是分割后就不能拼接了,从而不能使用这个函数。

我思来想去,发现其实转换一下就可以,根据字符串替换再转换就可以实现。代码如下,逐个说明:

  1. 将要分割的字符串先替换成其他的字符串,并标记一下
$aa = str_replace([',','。',';',':','?'],['{S}{A}','{S}{B}','{S}{C}','{S}{D}','{S}{E}'],$body);
  1. 分割掉标记{S},这样就把每个符号的位置分割开来了
$body = explode('{S}',$aa);
  1. 插入字符串,这里我的是特殊字符串,请忽略
$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;

	
}
  1. 用空格拼接起来
$body = implode('',$body);
  1. 再替换回原来的字符串,使之位置不变
$body = str_replace(['{A}','{B}','{C}','{D}','{E}'],[',','。',';',':','?'],$body);

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

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

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