php实现 带通配符的根据前后字符串截取的简单方法

获取网页源码,用截取函数获取需要的信息,获取http://www.3444.cc/Html/19746.htm电影网站的电影名字和演员


函数jiequstr($mubiaostr,$ksstr,$jsstr)的使用说明见php代码前面的注释

php代码:

<?php
/*函数jiequstr($mubiaostr,$ksstr,$jsstr)说明:

功能说明:通过提供开始结束字符串,来从目标字符串中截取内容

参数说明:
$mubiaostr---------目标字符串
$ksstr---------截取开始字符串,支持通配符(*)
$jsstr---------截取结束字符串,支持通配符(*)

基本方法:匹配前后可带通配符(*)得字符串,得到截取的范围,第1次的,然后截取

返回类型:存在,返回截取后的字符串,若开始或结束字符串没有匹配,则返回false

存在的问题:由于向这个函数初始些时时,当匹配不到前后字符串都会做取舍,放宽截取,而实际上更多的情况是需要精确截取的,所以最后修改为前后字符串不存在,不符合要求都要返回false,只有精确截取才返回截取的字符串,而有些多余的代码没有删去

*/


//jiequstr函数定义开始
function jiequstr($mubiaostr,$ksstr,$jsstr)
{if($mubiaostr==''){echo '目标字符串为空<br/>';return false;}
	
	if($ksstr==''){$jiequks=0;return false;}
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;return false;break;}

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

else $jiequks=$chaxunwz;

}

if($jsstr==''){$jiequjs=strlen($mubiaostr);return false;}

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;return false;break;}

}

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

else $jiequjs=$enddian;

}

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

//echo $jiequstr;

return $jiequstr;
}

//结束jiequstr函数定义


//一个测试的例子,获取网页源码,用截取函数获取需要的信息,获取电影网站的电影名字和演员
$url='http://www.3444.cc/Html/19746.htm';//网页地址
$yuanma=file_get_contents($url);

//获取电影名称
$q='电影名称:</div>(*)<div class="row_right"><strong>';//截取前字符串
$h='</strong>';
if(($name=jiequstr($yuanma,$q,$h))===false)$name='error';

//获取主要演员
$q='<div class="left">主要演员:</div>(*)<div class="row_right2">';
$h='</div>';
if(($yanyuan=jiequstr($yuanma,$q,$h))===false)$yanyuan='error';

echo '电影名称:'.$name.'<br>主要演员:'.$yanyuan;


?>


测试效果:




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值