获取网页源码,用截取函数获取需要的信息,获取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;
?>
测试效果:
: