PHP教程:随机插入字符串到字串符中,支持Html跳过Html标签

PHP教程:随机插入字符串到字串符中,支持Html跳过Html标签 - 第1张 - 菜鸟建站

之前我们写了一个zblog插件,zblog文章伪原创插件。后面有小伙伴需要插入一些随机的元素以达到文章伪原创的目的,下面我们记录一下php实现的方法函数:

function rand_in_str($txt,$insert){//txt 内容;insert要插入的关键字,可以是链接,数组
    //将内容拆分成数组,每个字符都是一个value,英文,中文,符号都算一个,只能在utf-8下中文才能拆分
    preg_match_all("/[\x01-\x7f]|[\xe0-\xef][\x80-\xbf]{2}/", $txt, $match);
 
    $delay=array();
    $add=0;
    //获取不能插入的位置索引号($delay 数组),也就是< > 之间的位置
    foreach($match[0] as $k=>$v){
        if($v=='<') $add=1;
        if($add==1) $delay[]=$k;
        if($v=='>') $add=0;
    }
  
    $str_arr=$match[0];
    $len=count($str_arr);
  
 
	if(is_array($insert)){
		foreach($insert as $k=>$v){
			//获取随机插入的位置索引值
			$insertk=insertK($len-1,$delay);
			//循环将insert数据 拼接到 随机生成的索引
			$str_arr[$insertk].=$insert[$k];
		}
	}
	else{
		//获取随机插入的位置索引值
		$insertk=insertK($len-1,$delay);
		//循环将insert数据 拼接到 随机生成的索引
		$str_arr[$insertk].=$insert;
	}
    
    //合并插入 关键词后的数据,拼接成一段内容
    return join('',$str_arr);
}
 
function insertK($count,$delay){//count 随机索引值范围,也就是内容拆分成数组后的总长度-1;delay 不允许的随机索引值,也就是不能在 < > 之间
    $insertk=rand(0,$count);
    if(in_array($insertk,$delay)){//索引值不能在 不允许的位置处(也就是< > 之内的索引值)
        $insertk=insertK($count,$delay);//递归调用,直到随机插入的索引值不在 < > 这个索引值数组中
    }
    return $insertk;
}
 
echo rand_in_str("网站建设公司哪家好?很多企业建站觉得找本地公司沟通方便、更靠谱,其实这是个天大的错误。","<a href='#'>菜鸟建站</a>");


相关推荐

PHP教程:PHP 返回数组中第一个通过条件的元素
  • php教程
  • 2021-04-13

PHP教程:PHP 返回数组中第一个通过条件的元素

PHP  array_filter() 函数可以通过回调函数过滤数组的元素,返回的是过滤后的数组。但是很多时候,我们只是简单的要求返回第一个通过条件的元素,这个时候,我们就需要做一些处理,所以我把这个过程整理成一个函数 array_first。function array_first($array, ...

PHP读取CSV文件中指定的某几行数据
  • php教程
  • 2021-04-07

PHP读取CSV文件中指定的某几行数据

最近在玩CSV表格比较多,CSV是什么?相信很多人都知道EXCEL表格那么这两者有何区别呢?1.CSV是纯文本文件,excel不是纯文本,excel包含很多格式信息在里面。2.CSV文件的体积会更小,创建分发读取更加方便,适合存放结构化信息,比如记录的导出,流量统计等等。3.CSV文件在windows平台默认的打开方式是excel,但是它的本质是一个文本文件...

PHP教程:time时间类实例代码
  • php教程
  • 2021-03-10

PHP教程:time时间类实例代码

在我们开发过程中,常常用到时间的一些例子,比如昨天,今天,前天,近七天,一周等等。在这里整理了一个时间的完整类php实例,直接实例化,有需要的朋友可以看看大家可以按照下面那个例子,输出你想要得到的日期,在开发过程中,可以直接放入在扩展库里,直接引用即可!<?php header("Content-type:text/html;Charset...

自动推送脚本(适用于百度推送懒人版插件)
  • php教程
  • 2021-02-22

自动推送脚本(适用于百度推送懒人版插件)

有时候我们推送页面URL并不是zblog系统产生的页面甚至当你想要推送其他网站URL的时候可能就需要到另外写脚本或插件。那么在这里给大家送上一个简单的推送脚本,配合zblog百度推送懒人版适用于推送任何网站内容。首先我们在zblog网站根目录新建一个tuisong.php,<?php  require 'zb_system...

php基于curl实现必应Bing API推送方法实例
  • php教程
  • 2021-02-13

php基于curl实现必应Bing API推送方法实例

<?php $arr = array(     'https://www.newbii.cn/' => array(         'url'&nb...

PHP教程:php实现敏感词过滤 停止词实例(附敏感词库下载)
  • php教程
  • 2021-01-13

PHP教程:php实现敏感词过滤 停止词实例(附敏感词库下载)

敏感词、文字过滤是一个网站必不可少的功能,如何设计一个好的、高效的过滤算法是非常有必要的。在实现敏感词过滤的算法中,我们必须要减少运算,而 DFA 在 DFA 算法中几乎没有什么计算,有的只是状态的转换。所以想更高效的进行敏感词的过滤,需要使用 DFA 算法。/**  * Notes: [DoFilterWords ...

PHP教程:PHP判断远程文件是否存在
  • php教程
  • 2021-01-11

PHP教程:PHP判断远程文件是否存在

这个代码可以判断远程文件或者本地代码,但其实主要作用就是判断远程文件,判断本地文件建议直接是要file_exists函数。function my_file_exists($file) {     if(preg_match('/^http:\/\//',$file)){ ...

PHP教程:php实现生成微博短网址实例
  • php教程
  • 2021-01-09

PHP教程:php实现生成微博短网址实例

下面分享一下通过php生成短网址的那个过程(这里将长网址生成短至5-6位字符长度并且还需要是唯一的):<?php function code62($x) {     $show = '';     while($...

PHP教程:通用PHP分页类、分页显示实例方法
  • php教程
  • 2020-12-09

PHP教程:通用PHP分页类、分页显示实例方法

本文通过PHP分页显示实例方法,结合实例形式分析了php数据库查询及内容结合HTML分页显示的简单操作技巧,希望对大家学习PHP程序设计有所帮助。先来看个实例<?php header("content-type:text/html;charset=utf-8"); $currentpage = 1; if(...

iconv('GBK','UTF-8',$str) 如果$str本来就是utf-8 是不是会乱码?
  • php教程
  • 2020-12-07

iconv('GBK','UTF-8',$str) 如果$str本来就是utf-8 是不是会乱码?

尝试了一下,是直接报错吧,iconv(): Detected an illegal character in input string所以我们先判断是不是utf8,再转码吧,这样保险点mb_detect_encoding — 检测字符的编码echo mb_detect_encoding($str,'UTF-8,GBK')!...