2010-12-19 64 views
0

好日子親愛的社區!如何使用PHP解析一個非常簡單的表格

我需要構建一個函數來解析一個非常簡單的表 (帶有一些標籤和值)的內容,請參閱下面的URL。我已經使用各種方式來解析html源代碼。但這一個是有點棘手!見我需要解析的目標 - 它有一些invaild標記:

目標:http://www.schulministerium.nrw.de/BP/SchuleSuchen?action=644.0013008534253&SchulAdresseMapDO=194190

嗯,我這一個

<?php 
require_once('config.php'); // call config.php for db connection 
$filename = "url.txt"; // Include the txt file which have urls 
$each_line = file($filename); 
foreach($each_line as $line_num => $line) 
{ 
    $line = trim($line); 
    $content = file_get_contents($line); 
    //echo ($content)."<br>"; 
    $pattern = '/<td>(.*?)<\/td>/si'; 
    preg_match_all($pattern,$content,$matches); 

    foreach ($matches[1] as $match) { 
     $match = strip_tags($match); 
     $match = trim($match); 
     //var_dump($match); 
     $sql = mysqli_query("insert into tablename(contents) values ('$match')"); 
     //echo $match; 
    } 
} 
?> 

好試了一下 - 見正則表達式線7-11:它不匹配!我不得不重做這個腳本的解析器部分。我需要解析一些不同的東西 - 因爲parsercode不完全符合目標。它旨在取回表格的結果。

任何人都可以幫助我在這裏得到一個更好的正則表達式 - 或更好的方式來解析這個網站... 任何和所有的幫助將大大apprecaited。

問候 零

+0

做TD的有屬性或其他sruff?怎麼樣一個XML解析器? – 2010-12-19 11:08:26

+0

'​​'無法在您要解析的網頁中顯示。 – 2010-12-19 11:08:36

+0

看看http://simplehtmldom.sourceforge.net/(爲了您的html解析需要) – Andreas 2010-12-19 11:10:42

回答

0

你可以使用撕開使用 preg_split('/<td width="73%">&nbsp;/', $str, -1);表(注意,我沒有理會轉義字符)

你要刪除的第一個條目。現在你可以使用stripos和substr來刪除後面的所有東西。

這是一個基本的設置!你將不得不對它進行微調,但我希望這能讓你瞭解我的方法。

+0

美好的一天該死的美國人,很多很多感謝分享你的方法!通過放棄第一個條目,你的意思是我應該放棄我的方法。我用preg_split('/   /',$ str,-1)替換它。之後,我需要使用stripos和substr來刪除所有我不需要的東西。我會在今天晚些時候嘗試一下!非常感謝您在這裏分享您的想法! – zero 2010-12-19 11:25:49

0

正則表達式並不總是提供完美的結果。使用任何HTML解析器是一個好主意。有許多HTML解析器,如Gordon's Answer中所述。

我以前用過Simple HTML DOM Parser,它對我很有用。

例如:

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

// Find all <td> in <table> which class=hello 
$es = $html->find('table.hello td'); 

// Find all td tags with attribite align=center in table tags 
$es = $html->find('table td[align=center]'); 
+0

嗨Naveed - 非常感謝提示。我會在週末晚些時候嘗試一下 – zero 2010-12-19 17:33:54

相關問題