0

我正在使用 preg_match_all 并返回此错误:

Notice: Undefined offset: 0 in B:\xampp\htdocs\fogsy\link_searcher.php on line 98

这是第 98 行:

$server_name=$matches[0][1]."/";

这是我的功能:它用于从 html 正文中检索链接。

    function GetLinks($body_str,$parent_url)
        {           
            $url_list=array();

            preg_match_all('/http:\/\/(.*)\//iU', $parent_url, $matches, PREG_SET_ORDER);
            $server_name=$matches[0][1]."/";

            preg_match_all('/< *a.*href *= *[\'"](.*)[\'"].*>(.*)< *\/a *>/iU', $body_str, $matches, PREG_SET_ORDER);

            for($count=0;$count<count($matches);$count++)
                {
                    $text=$matches[$count][2];

                    if(strpos(strtolower($matches[$count][1]),"http://")===false&&strpos(strtolower($matches[$count][1]),"www")===false)
                    $href="http://".$server_name.trim($matches[$count][1],"/");                         
                    else $href=$matches[$count][1];                             

                    $url_list[$text."_".$count]=$href;  
                }   
            return $url_list;
        }

有任何想法吗 ?

4

1 回答 1

1

这是因为您在这里没有索引 0 :$server_name=$matches[0][1]."/";

print_r($matches); 看看。

这是因为没有匹配的模式 $parent_url

像这样改变它:

if(count($matches) > 0){
    $server_name=$matches[0][1]."/";
}
else{
    $server_name="";
}

但这会影响您的其他功能,最好向$parent_url此功能发送格式良好的文件。

于 2013-02-28T07:07:00.150 回答