function getcsrq($code){
preg_match_all('/<td> 出生日期:<\/td>(.*?)<td align="left">(.*?)<\/td>(.*?)
<td> 居 住 地: <\/td>(.*?)<td align="left">(.*?)<\/td>(.*?)
<td> 工作年限:<\/td>(.*?)<td align="left">(.*?) <\/td>/is',$code,$csrq_tmp);
$csrq1=$csrq_tmp[2]; //这种写法有问题么?我用print_r($csrq_tmp['2']);是可以的,为什么调用会有问题
$csrq2=$csrq_tmp[5];
$csrq3=$csrq_tmp[8];
return $csrq1;
return $csrq2;
return $csrq3;
}function printcsrq($csrq1,$csrq2,$csrq3){
echo " <strong>出生日期:</strong>",strip_tags($csrq1)," <br/>";
echo " <strong>居 住 地:</strong>",strip_tags($csrq2)," <br/>";
echo " <strong>工作年限:</strong>",strip_tags($csrq3)," <br/>";
}$csrq = getcsrq($htmlcodes); //掉用方法
printcsrq($csrq1,$csrq2,$csrq3); //打印出来的值是空的????????
谁能帮我看看,哪的问题出错了~~~~~
这样
function getcsrq($code){
preg_match_all('/<td> 出生日期:<\/td>(.*?)<td align="left">(.*?)<\/td>(.*?)
<td> 居 住 地: <\/td>(.*?)<td align="left">(.*?)<\/td>(.*?)
<td> 工作年限:<\/td>(.*?)<td align="left">(.*?) <\/td>/is',$code,$csrq_tmp);
global $csrq1, $csrq2, $csrq3; // 声明全局变量
$csrq1=$csrq_tmp[2]; //这种写法有问题么?我用print_r($csrq_tmp['2']);是可以的,为什么调用会有问题
$csrq2=$csrq_tmp[5];
$csrq3=$csrq_tmp[8];
}
出生日期:Array
居 住 地:Array
工作年限:Array
啊,晕,看错了。
你最后的返回什么意思啊,函数没有这么返回的。(只能返回一个)你直接返回一个$csrq_tmp然后后面调用
printcsrq($csrq[2],$csrq[5],$csrq[8])
那3个都是这种格式,要怎么写才能分别读出,我用$csrq1=$csrq_tmp[0][2]和$csrq1=$csrq_tmp[2]又有什么不一样,我对正则不是太熟悉
如果反回的数组是 $matches 那么
$matches[0] 是第一组匹配结果,$matches[0][0] 包含匹配整个模式的文本,$matches[0][1] 包含匹配第一个子模式的文本,以此类推。同样,$matches[1] 是第二组匹配结果,等等...//这种写法有问题么?我用print_r($csrq_tmp['2']);是可以的,为什么调用会有问题
要看你这里print_r($csrq_tmp['2']) 肯定是数组, 打印出来然后根据格式取出你要的值就行
preg_match_all('/<td> 出生日期:<\/td>(.*?)<td align="left">(.*?)<\/td>(.*?)
<td> 居 住 地: <\/td>(.*?)<td align="left">(.*?)<\/td>(.*?)
<td> 工作年限:<\/td>(.*?)<td align="left">(.*?) <\/td>/is',$code,$csrq_tmp);
return $csrq_tmp;
}function printcsrq($csrq1,$csrq2,$csrq3){
echo " <strong>出生日期:</strong>",strip_tags($csrq1)," <br/>";
echo " <strong>居 住 地:</strong>",strip_tags($csrq2)," <br/>";
echo " <strong>工作年限:</strong>",strip_tags($csrq3)," <br/>";
}$csrq = getcsrq($htmlcodes); //掉用方法
printcsrq($csrq[2],$csrq[5],$csrq[8]); //打印出来的值是空的????????
---------------------否则的话,如果你想返回多个值,不能通过 return语句。
需要在参数里添加传址参数
function getcsrq($code,&$csrq1,&$csrq2,&$csrq3,){
...
$csrq1=$csrq_tmp[2];
$csrq2=$csrq_tmp[5];
$csrq3=$csrq_tmp[8];
}
这样就行了
function getcsrq($code){
preg_match_all('/ <td> 出生日期: <\/td>(.*?) <td align="left">(.*?) <\/td>(.*?)
<td> 居 住 地: <\/td>(.*?) <td align="left">(.*?) <\/td>(.*?)
<td> 工作年限: <\/td>(.*?) <td align="left">(.*?) <\/td>/is',$code,$csrq_tmp);
$csrq[]=$csrq_tmp[2];
$csrq[]=$csrq_tmp[5];
$csrq[]=$csrq_tmp[8];
return $csrq; //都放到数组中,输出时都是$csrq[0]这种对么???
}
function printcsrq($csrq){
echo " <strong>出生日期:</strong>",strip_tags($csrq[0])," <br/>";
echo " <strong>居 住 地:</strong>",strip_tags($csrq[1])," <br/>";
echo " <strong>工作年限:</strong>",strip_tags($csrq[2])," <br/>";
}
我用这运行的时候,发现速度出其的慢,甚至都超时了~~~
如果慢,应该不是最后那几句赋值和返回语句造成的。
你最好一步一步调试,先不要调用printcsrq($csrq)
在第一个函数里用print_r($csrq_tmp)输出结果看看;然后再函数外面print_r($csrq)看看。速度怎么样?