2009-09-15 26 views
0

例如,爲了從HTML去掉鍵/值對象下面這樣:使用PHP匹配<table >的數據的最有效方法是什麼?

<tr> 
      <td id="td3" class="td3" bgcolor="#FFFFFF" colspan="4">■ Related Information </td> 

     </tr> 
     <tr> 
      <td id="td5" class="td5" width="10%">job title:</td> 
      <td id="td5" class="td5" width="90%" colspan="3">Sales Representitive</td> 
     </tr> 
     <tr> 
      <td id="td5" class="td5" width="10%">Date:</td> 

      <td id="td5" class="td5" width="40%">2009-9-15</td> 
     </tr> 
     <tr> 
      <td id="td5" class="td5" width="10%">Location:</td> 

      <td id="td5" class="td5" width="40%">Jiangyin</td> 
     </tr> 
     <tr> 
      <td id="td5" class="td5" width="10%">Degree:</td> 
      <td id="td5" class="td5" width="40%">Bachelor</td> 

      <td id="td5" class="td5" width="10%">Major:</td> 
      <td id="td5" class="td5" width="40%">No limit</td> 
     </tr> 
     <tr> 
      <td id="td5" class="td5" width="10%">Sex:</td> 
      <td id="td5" class="td5" width="40%">No limit</ 
     </tr> 
     <tr> 
      <td id="td5" class="td5" width="10%">Type:</td> 
      <td id="td5" class="td5" width="40%">Fulltime</td> 
      <td id="td5" class="td5" width="10%"></td> 
      <td id="td5" class="td5" width="40%"></td> 
     </tr> 

我已經累寫入長的正則表達式的。 有沒有更簡單的方法來做到這一點?

+0

簡單的PHP通常生成HTML,而不是對其進行解析。你是否告訴我們整個故事?你是否在命令行使用PHP? – pavium 2009-09-15 07:54:34

+0

@ pavium,是的,在命令行。 – omg 2009-09-15 08:04:00

回答

5

使用HTML或XML解析器,如DOMDocumentSimpleXML。然後你可以簡單地遍歷DOM並獲取你想要的數據。

+0

它們都可以用來解析HTML嗎? – omg 2009-09-15 08:04:31

+0

@Shore:SimpleXML只能解析XML。但是DOMDocument可以解析HTML和XML。 – Gumbo 2009-09-15 08:21:08

2

你可以使用一些簡單的正則表達式:

$values = array(); 
if (preg_match_all("/<tr>(.*?)<\/tr>/is", $html, $matches)) { 
foreach($matches[1] as $match) { 
    if (preg_match_all("/<td[^>]*>([^<]+)<\/td>/is", $match, $tds)) 
    array_push($values, $tds[1]); 
} 
} 

var_dump($values); 

當分離的模式,而不是一個單一的大格局是簡單了很多。

1

您應該嘗試不太瞭解的PHP Simple HTML DOM Parser。它可以讓你做的東西是這樣的:

// Create DOM from URL or file 
$html = file_get_html('http://www.google.com/'); 

// Find all images 
foreach($html->find('img') as $element) 
     echo $element->src . '<br>'; 

// Find all links 
foreach($html->find('a') as $element) 
     echo $element->href . '<br>'; 

// Create DOM from string 
$html = str_get_html('<div id="hello">Hello</div><div id="world">World</div>'); 

$html->find('div', 1)->class = 'bar'; 

$html->find('div[id=hello]', 0)->innertext = 'foo'; 

echo $html; // Output: <div id="hello">foo</div><div id="world" class="bar">World</div> 
相關問題