2012-03-08 41 views
0

我想要這個代碼來檢查一個元素是否存在,然後獲取div內的記錄數。我如何才能使此RegEx正常工作?

HTML

<div id=myDiv>This table contains 5 records (3 seconds)</div> 

PHP

$selector = new Zend_Dom_Query($response->getBody()); 
$nodes = $selector->query('#myDiv'); 

if (count($nodes) < 1) { 
      $this->setValue(0); 
      return; 
     } 

     $el = $nodes->current(); 
     if (preg_match('#(\d+[\d,]*)\s+result#i', $el->nodeValue, $matches)) { 

      $number = str_replace(',', '', $matches[1]); 
      $this->setValue(intval($number)); 
     } else { 
      Zend_Registry::get('log')->err(get_class($this).': Unable to match response and regex.'); 
      $this->setValue(0); 
     } 

現在它到達底部$這個 - >的setValue(0),所以它可以找到的元素。正則表達式肯定有問題,這就是Im無能爲力的地方。

if (preg_match('#(\d+[\d,]*)\s+result#i', $el->nodeValue, $matches)) { 
+1

我明白,這是不是一個回答你的問題,但是一個很好的資源,正則表達式和測試http://gskinner.com/RegExr/ – bretterer 2012-03-08 15:15:22

+0

我需要一些時間和學習如何做這個。我在這裏尋找很多幫助。那工具看起來很有用。謝謝。你能推薦任何好書嗎? – madphp 2012-03-08 15:17:38

+1

我建議任何O'Reilly系列書籍。有幾個好的。 http://www.amazon.com/Mastering-Regular-Expressions-Jeffrey-Friedl/dp/0596528124/ref=sr_1_1?ie=UTF8&qid=1331219916&sr=8-1除了袖珍手冊http://www.amazon .com/Regular-Expression-Pocket-Reference-Expressions/dp/0596514271/ref = sr_1_3?ie = UTF8&qid = 1331219916&sr = 8-3抱歉,我無法對您的問題提供更多幫助 – bretterer 2012-03-08 15:19:45

回答

1

的HTML代碼中不包含任何可能匹配#(\d+[\d,]*)\s+result#i,表達要求的字符串「結果」存在。

您可能想要將該單詞更改爲「記錄」。例如:

/(\d+)\s+record/i 
相關問題