用正则preg_match_all遇到的一个问题各位一定来看看
我是用的 CodeIgniter 写一个小偷主要是为了地址友好,其中用正则匹配所有相同内容时出现错误提示A PHP Error was encountered
Severity: Notice
Message: Array to string conversion
函数本身是这样的:
function Cutstr($sptag,$areaRule,$html,$regex=true,$model=true)
{
//用正则表达式的模式匹配多个相同项
if($regex === true)
{
$areaRule = str_replace("/","\\/",$areaRule);
$areaRules = explode($sptag,$areaRule);
$arr = array();
if($html==''||$areaRules=='')
{
return '';
}
if($model===true)
{
preg_match_all("/".$areaRules."(.*)".$areaRules."/isU",$html,$arr);
}else{
preg_match("/".$areaRules."(.*)".$areaRules."/isU",$html,$arr);
}
return empty($arr) ? '' : trim($arr);
//return implode(",", $arr);
}
else //用字符串模式匹配
{
$areaRules = explode($sptag,$areaRule);
if($html=='' || $areaRules=='')
{
return '';
}
$posstart = @strpos($html,$areaRules);
if($posstart===false)
{
return '';
}
$posend = @strpos($html,$areaRules,$posstart);
if($posend > $posstart && $posend!==false)
{
return substr($html,$posstart+strlen($areaRules),$posend-$posstart-strlen($areaRules));
}
else
{
return '';
}
}
}
基中用到preg_match_all匹配的时候输出的数组只有转换成字符串也就是这样
//return implode(",", $arr);
才能用,不能直接读取循环数组这是为什么?
如果我直接在程序中写一个
preg_match_all('/<a href="(.*)" target=_blank>/isU',$list,$href);
print_r($href);
这个时候又是正常的,可是放到函数里就出错我搞不明白,大家知道的说一下原因啊,谢谢 我又测试了一下我觉得应该是函数的问题
return empty($arr) ? '' : trim($arr);
empty($arr) ? '' 这个可能是造成出错的原因这里该怎么改呢?
你到底是什么问题?
trim 只能用在字符串上,你貌似传递了 array,自然出错了。 你到底是什么问题?
trim 只能用在字符串上,你貌似传递了 array,自然出错了。 ...
Hex 发表于 2011-4-4 09:13 http://codeigniter.org.cn/forums/images/common/back.gif
哦,这个地方可能是我没有搞清楚,如果数组用了trim是不是就会提示
"将数组转换为字符串"
A PHP Error was encountered
Severity: Notice
Message: Array to string conversion
对呀~
给数组用 trim,你想得到什么结果?自动把数组每个元素都做 trim?那还做不到,trim()没这么强大,需要自己 foreach 呵呵,谢谢HEX有时候一不小心还真容易犯错呵呵
页:
[1]