2013-06-30 85 views
-4

我建立一個PHP數據挖掘(刮) 我有這樣的HTML行:正則表達式刮板挑戰

<label class='area'> 
    <font class='bg_info' onmouseover="land_convert_txt(this,3067)" onmouseout='tooltip_hide()'> 
    3,067 Sq. Ft. 
    </font> 

如何設置我的正則表達式只提取區域價值?

這是我的函數:

function extract_regex($subject, $regex, $index = 1) 
{ 
    preg_match_all($regex, $subject, $matches); 
    if (count($matches[$index])) 
    { 
     if (count($matches[$index]) == 1) 
     { 
      return trim($matches[$index][0]); 
     } 
     return $matches[$index];   
    } 
    return ''; 
} 

(this,3067)不斷變化!

先進的謝謝

+0

爲什麼不直接用strip_tags()? –

+0

這是正確的嗎? –

+0

$ article ['area'] = extract_regex($ html,'/ *)/); –

回答

0
function extract_regex($subject, $regex, $index = 1) 
    { 
     preg_match_all($regex, $subject, $matches); 
     if (count($matches[$index])) 
     { 
      if (count($matches[$index]) == 1) 
      { 
       return trim($matches[$index][0]); 
      } 
      return $matches[$index];   
     } 
     return ''; 
    } 

    $out = extract_regex("<label class='area'><font class='bg_info' onmouseover='land_convert_txt(this,3067)' onmouseout='tooltip_hide()'>3,067 Sq. Ft.</font></label>","/<label class=\'area\'>(.*)<\/label>/i"); 

     echo "<xmp>". $out . "</xmp>"; 
+0

謝謝,但我表示,數字不斷變化,即3067 –

+0

你是什麼意思「數字不斷變化」? –

+0

我的意思是從一個頁面到另一個頁面的變化,它的變量 –

1

不要使用正則表達式來處理HTML!
不要試圖重新發明輪子,你可能會創建一個正方形。

嘗試使用一些PHP網頁scrappers,如:

http://net.tutsplus.com/tutorials/php/html-parsing-and-screen-scraping-with-the-simple-html-dom-library/

使用的代碼如下所示:

# create and load the HTML 
include('simple_html_dom.php'); 
$html = new simple_html_dom(); 
$html->load($myHTML); 

# get an element representing the area element 
//$element = $html->find('label[class=area]'); 
$element = $html->find(".area") 

# Echo it out 
echo $element[1]->innertext 
+0

非常感謝你,但我使用正則表達式構建我的所有lib,它將花費時間來修復它,該區域部分只是我需要在reg ex –

+2

節省維護時間值得你首先要把它放在正確的位置上。 – Herbert

相關問題