php 正则表达式爬网(从table-tr-td中抓取数据,转换成json)

php 正则表达式爬网(从table-tr-td中抓取数据,转换成json)_第1张图片

 

注意正则表达式的懒惰匹配和贪婪匹配。

在如下位置加入大写U,是匹配多条的tr。如果没有,则从第一行一直匹配到最后一行。只有一条数据

代码如下

 $str='[';
        $data = file_get_contents('D:\1.txt');
        preg_match_all("/([\w\W]*)<\/tr>/iU", $data, $media);
        $first_data=$media[0];
        preg_match_all('/([\w\W]*)<\/th>/iU',$first_data[0],$names);
        for ($i=1;$i<=count($first_data)-1;$i++) {
           preg_match_all('/([\w\W]*)<\/td>/iU',$first_data[$i],$values);
           $str=$str.'{';
            for ($j=0;$j<=count($values[1])-1;$j++) {
                $name=lcfirst($names[1][$j]);
                $name=str_replace(' ','',$name);
                $name=str_replace('.','',$name);
                $str= $str.'\''.$name.'\':\''.$values[1][$j].'\'';
                if($j!=count($values[1])-1)
                {s
                    $str=$str.',';
                }
                else{
                     $str=$str.'}';
                }
             }
            if($i!=count($first_data)-1){
                 $str=$str.',';
            }
        }
        $str=$str.']';
        $file=fopen('D:\data.txt','w+');

        var_dump(fwrite($file,$str));

你可能感兴趣的:(正则表达式,懒惰匹配,爬虫)