代码中
//将HTML表格的每行每列转为数组,采集表格数据 
<? 
function get_td_array($table) { 
$table = preg_replace("'<table[^>]*?>'si","",$table);
//OSPHP.COm.CN
$table = preg_replace("'<tr[^>]*?>'si","",$table); 
$table = preg_replace("'<td[^>]*?>'si","",$table); 
$table = str_replace("</tr>","{tr}",$table); //开源代码OSPhP.COm.CN 
$table = str_replace("</td>","{td}",$table); 
//去掉 HTML 标记  
$table = preg_replace("'<[/!]*?[^<>]*?>'si","",$table); //OSPHP.COM.Cn开源 
//去掉空白字符   
$table = preg_replace("'([rn])[s]+'","",$table); 
$table = str_replace(" ","",$table);
//开源代码OSPHP.COM.Cn
$table = str_replace(" ","",$table); 
$table = explode('{tr}', $table); 
array_pop($table); //PHP开源代码 
        foreach ($table as $key=>$tr) { 
$td = explode('{td}', $tr); 
array_pop($td); 
$td_array[] = $td; //PHP开源代码 
        } 
        return $td_array; 

?> 代码中$table = preg_replace("'<table[^>]*?>'si","",$table); 正则表达式'<table[^>]*?>'si中?不明白什么意思,以及后面si的作用? 还有怎样将html代码抓取到变量$table中? 感谢~~~~~~~

解决方案 »

  1.   

    '*'后面加上'?'  表示让它尽可能少的匹配内容,防贪婪
    后面的'si'为修正符,'s'表示把字符串视为单行,换行符作为普通字符处理,'i'表示不区分大小写
    $table=file_get_contents('http://....');
      

  2.   

    [^>]*?  ----  ^在[]中表示非 ,  * 匹配0次或多次。? 是指匹配0或者1次 ,防止贪婪匹配s:  将字符串视为单行处理。且把换行符当普通字符处理。
    i:   忽略大小写