php 随即插入百度关键字(不重复)

通过获取百度关键字以获得这部分关键字,然后对给定的字符串插入这些关键字,随即不重复的,需要填写1.想要插入的关键字数量,2.查询的关键字,3.和原字符串;


实际插入的关键字数量取百度实际有的关键字,用户想要的数量的,以及可供插入的位置数量的最小值

可供插入的位置:即标示支付,。</p> ?!等支付,已经内置,路过出现没有的标示,可以修改php代码,加入新的标识字符

里面的参数匹配获取关键字,是自己写的简单的功能函数


另外也可以通过获取文本关键字的,给出关键字文本路径,我并没有修正和完善这部分

写了很多代码,主要是参数循环匹配的函数和通配符截取字符串的函数代码占的比较多


欢迎大家多提宝贵意见,指出存在的问题和错误



php代码:要保存命名为input_keyword.php

<?php
set_time_limit(0); 
//循环截取函数定义开始
function canshujiequ($yuanma,$canshustr,$mubiao)
{if($yuanma=='')return array();
	if(strpos($canshustr,'[参数]')==false||strpos($mubiao,'[参数1]')==false)
	{echo '参数或组合字符串格式不对'; return array();}
	$chaxunwz=0;
$canshuarr=array();
$canshuarr=explode('[参数]',$canshustr);
//echo '参数分割后的数组:';
//print_r($canshuarr);

//echo '<br/><br/>';
$len1=count($canshuarr);
$pipeiarr=array();
$tpfarr=array();
$qianks=0;
$qianjs=0;
$nowks=0;
$nowjs=0;
$end=0;
$num=0;
while(($end==0)&&($chaxunwz<strlen($yuanma))){
$mubiaofuben=$mubiao;
$feikong=0;
for($i=0;($end==0)&&($i<$len1);$i++){
if($canshuarr[$i]=='')continue;
$feikong++;
$tpfarr=explode('(*)',$canshuarr[$i]);
$len2=count($tpfarr);
$feikongnum=0;
for($j=0;($j<$len2)&&($end==0);$j++){
if($tpfarr[$j]=='')continue;
$feikongnum++;
if($chaxunwz>=strlen($yuanma)){$end=1;break;}
if(($pipeiwz=strpos($yuanma,$tpfarr[$j],$chaxunwz))!==false){
$chaxunwz=$pipeiwz+strlen($tpfarr[$j]);
if($feikongnum==1)$nowks=$pipeiwz;
$nowjs=$chaxunwz;


}
else{$end=1;break;}



}

if($end==0){if($feikong>1){
$str=substr($yuanma,$qianjs,$nowks-$qianjs);
$mubiaofuben=str_replace('[参数'.($feikong-1).']',$str,$mubiaofuben);
//echo '替换[参数'.($feikong-1).']<br/>';
}
$qianks=$nowks;
$qianjs=$nowjs;

}


else{//echo '没有匹配了<br/>';
break;}


}



if($end==0){
$pipeiarr[]=$mubiaofuben;

//echo '第'.($num+1).'条结果:'.$pipeiarr[$num].'<br/>';
$num++;
}




}
//echo "最后的匹配数组:";
//print_r($pipeiarr);
return $pipeiarr;

}//循环截取函数定义结束


//jiequstr函数定义开始
function jiequstr($mubiaostr,$ksstr,$jsstr)
{if($mubiaostr==''){echo '目标字符串为空<br/>';return '';}
	
	if($ksstr=='')$jiequks=0;
else{
$chucuo1=0;
$arr1=explode('(*)',$ksstr);
$len1=count($arr1);
$chaxunwz=0;
$feikongnum1=0;
for($i=0;$i<$len1;$i++){
if($arr1[$i]=='')continue;
$feikongnum1++;
if(($wz=strpos($mubiaostr,$arr1[$i],$chaxunwz))!==false)
$chaxunwz=$wz+strlen($arr1[$i]);

else {$chucuo1=1;break;}


}

if($chucuo1==1)$jiequks=0;

else $jiequks=$chaxunwz;


}


if($jsstr=='')$jiequjs=strlen($mubiaostr);

else{

$chucuo2=0;
$arr2=explode('(*)',$jsstr);
$len2=count($arr2);
$chaxunwz=$jiequks;
$feikongnum2=0;
for($i=0;$i<$len2;$i++){
if($arr2[$i]=='')continue;
$feikongnum2++;
if(($wz=strpos($mubiaostr,$arr2[$i],$chaxunwz))!==false)
	{$chaxunwz=$wz+strlen($arr2[$i]);
	if($feikongnum2==1)$enddian=$wz;
	
	
	}
else {$chucuo2=1;break;}


}

if($chucuo2==1)$jiequjs=strlen($mubiaostr);

else $jiequjs=$enddian;


}

$jiequstr=substr($mubiaostr,$jiequks,$jiequjs-$jiequks);


//echo $jiequstr;

return $jiequstr;

}

//结束jiequstr函数定义


//------------随机插入关键字函数定义开始-----------------
function randkeyword($mubiaostr,$zdyshu='5',$biaosifu='.')
{global $keyarr,$keyshu;
$biaojiarr=array('<br>','<br/>','.','。','</p>','!','!','?','?');
if($mubiaostr==''){echo '提供的目标字符串为空,不处理<br/>';return '';}
	$zuoweiarr=array();//关键字座位数组
$zuoweishu=0;//座位数
$chaxunwz=0;
$k=0;
for($i=0;$i<count($biaojiarr);$i++){
while($chaxunwz<strlen($mubiaostr)){

if(($wz=strpos($mubiaostr,$biaojiarr[$i],$chaxunwz))!==false)
	{
$chaxunwz=$wz+strlen($biaojiarr[$i]);
$zuoweishu++;
$zuoweiarr[$k][0]=$wz;
$zuoweiarr[$k][1]=$biaojiarr[$i];
$k++;
}
else break;


}//end while($chaxunwz<strlen($mubiaostr)){

$chaxunwz=0;
}

echo '座位数:'.$zuoweishu.'<br/>';

//选择自定义关键字数,关键字可用数,关键字座位的最小值
$minshu=$keyshu;
if($zdyshu<=$keyshu)$minshu=$zdyshu;
else $minshu=$keyshu;

if($zuoweishu<$minshu)$minshu=$zuoweishu;
echo '取自定义关键字数,关键字可用的座位数,关键字的总数的最小值<br/>';
echo '最后可以为您插入的关键字数为:'.$minshu.'<br/>';

$kykeyshu=$keyshu;//可用的关键字数

$kykeyid=$kykeyshu-1;//可用关键字最大id

$kyzuoweishu=$zuoweishu;//可用座位数

$kyzuoweiid=$zuoweishu-1;//可用座位最大id


for($i=1;$i<=$minshu;$i++){
$keyid=rand(0,$kykeyid);

$key='----'.$keyarr[$keyid].'----';//当前插入的关键字

//echo '当前插入的关键字:'.$key.'<br/>';

$keyarr[$keyid]=$keyarr[$kykeyid];
$keyarr[$kykeyid]=$key;
$kykeyid--;
$zuoweiid=rand(0,$kyzuoweiid);

$zuowei=$zuoweiarr[$zuoweiid][0];//当前选择的座位
$biaosifu=$zuoweiarr[$zuoweiid][1];
$zuoweiarr[$zuoweiid]=$zuoweiarr[$kyzuoweiid];
$zuoweiarr[$kyzuoweiid]=$zuowei;
$kyzuoweiid--;//可用座位id递减1

//echo '当前选择的座位值:'.$zuowei.'<br/>';

//分割目标字符串,插入关键字

$left=substr($mubiaostr,0,$zuowei+strlen($biaosifu));

$right=substr($mubiaostr,$zuowei+strlen($biaosifu));

$mubiaostr=$left.$key.$right;

//echo '第'.$i.'次插入关键字后的字符串:'.$mubiaostr.'<br/>';

//把位于插入座位后面的座位的值加插入的关键字的长度
for($j=0;$j<count($zuoweiarr);$j++){

if($zuoweiarr[$j][0]>$zuowei)$zuoweiarr[$j][0]=$zuoweiarr[$j][0]+strlen($key);

}


}

return $mubiaostr;

}//------------------结束随即插入关键字函数定义---------------------


//测试随即插入关键字
//echo randkeyword('sfsfsdtfdf........dgggfffgdfd');





//获取源代码
//$cishu=5;
//$mubiaourl='http://www.3444.cc/List/List_5.htm';

//--------------huoquyuanma函数定义开始----------------
function huoquyuanma($mubiaourl,$cishu=5)
{for($i=1;$i<=$cishu;$i++){
	$yuanma=file_get_contents($mubiaourl);

if($yuanma!==''){
//echo '第'.$i.'次请求到源码,跳出请求<br/>';
break;
}

else {
	if($i!==$cishu){//echo '第'.$i.'次请求失败,5秒后继续下一次请求<br/>';
	sleep(5);}

}


}
//$yuanma=iconv('gb2312','utf-8/ignore',$yuanma);

return $yuanma;
}//-----------------huoquyuanma函数定义结束-------------

if(isset($_POST['ok'])){
$yuanstr=!empty($_POST['str'])?$_POST['str']:die('请提交处理的字符串');
$shuliang=isset($_POST['geshu'])&&is_numeric($_POST['geshu'])&&$_POST['geshu']>=1?$_POST['geshu']:die('输入的个数有问题');

$keyarr=array();

$chaxunkey=!empty($_POST['tag'])?$_POST['tag']:die('请输入百度关键字');//百度查询关键字
$usetxt=0;//是否使用文本关键字

//----------获取文本关键字数组开始------------------
if($usetxt==1){$guoluarr=array();
$txturl='C:\ComsenzEXP\wwwroot\1.txt';
if(file_exists($txturl))echo '关键字txt文件存在<br/>';
else die('关键字txt文件不存在,请检查');

$txtarr=file($txturl);//获取关键字为数组

//去掉空行
for($i=0;$i<count($txtarr);$i++)
{
if(trim($txtarr[$i]))$guoluarr[]=$txtarr[$i];


}



$keyarr=$guoluarr;}
//--------------文本关键字获取结束-------------------


//---------获取百度关键字开始-------------

else {
	echo '当前选择百度关键字:'.$chaxunkey.'<br/>';
if($chaxunkey=='')die('自定义关键字不能空');

else{
$canshustr='<th><a href="[参数]">[参数]</a>(*)</th>';
$zhuhestr='<a href="http://www.baidu.com/[参数1]">[参数2]</a>';
$baiduurl='http://www.baidu.com/s?bs='.$chaxunkey.'&f=8&wd='.$chaxunkey;
echo $baiduurl;
$baiduyuanma=huoquyuanma($baiduurl,5);
if($baiduyuanma=='')die('获取百度关键字源码为空');
if(strpos($baiduyuanma,'<div id="rs">'))
	{
	echo '百度有相关的关键字,现在开始提取<br/>';
	$baiduyuanma=jiequstr($baiduyuanma,'<div id="rs">','</div>');

$temparr=canshujiequ($baiduyuanma,$canshustr,$zhuhestr);
$keyarr=$temparr;

$keyarr[]=$chaxunkey;
}

else echo '百度没有与'.$chaxunkey.'相关的关键字<br/>';

}




}

//----------获取百度关键字结束---------



$keyshu=count($keyarr);

echo '百度关键字的获取情况:<br>';
var_dump($keyarr);

if(empty($keyshu))die('关键字数组空,终止'); 




//----------------插入关键字阶段

$yuanstr=randkeyword($yuanstr,$shuliang);
echo '<br><br>';
echo '最后得到的插入关键字的字符串效果录下:<br>';
echo '<br><br>';

//print_r($yuanstr);
echo '<textarea name="str" rows="40" cols="80">'.$yuanstr.'</textarea>';



}

//输出初始表单
else{

echo '<form method="post" action="input_keyword.php">
	请输入要插入关键字的字符串:<br><textarea name="str" rows="40" cols="80"></textarea><br>
	输入插入的关键字个数(大于等于1):<input type="text" name="geshu"><br>百度关键字:(路:php)<input type="text" name="tag"><br><input type="submit" value="提交" name="ok" >
</form>';


}





?>










插入关键字前:


测试效果图:


插入关键字后:




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值