2011-04-28 98 views
1

我有一些文件(約500個文件)沒有擴展名。
但我設法查看它的內容,它有一些奇怪的標籤和東西。PHP提取和解析_基本問題

我需要從中提取所有IP addreesses。對於在第2行前總有這樣的一個IP地址... (71.129.195.163)

此外,還有一些html標籤一樣< A HREF =「HTTP ://www.xyz.com「>在很多行中。 我需要從中獲取該域名,如xyz.com

有人可以幫助這個PHP新手?我知道整個文件作爲一個字符串和所有tht ..但由於PHP功能強大,我正在尋找一個甜美和簡單的方法來實現這一點。

非常感謝

回答

1

正則表達式對此很好。

要查找所有IP地址的文件:

$ipPattern = '/(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:[.](?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}/'; 

$ips = array(); 
preg_match_all($ipPattern, $fileContents, $ips); 
$ips = $ips[0]; 

要查找所有鏈接:

$linkPattern = '/href(\s+)?\=(\s+)?[\'"](.+?)[\'"]/'; 

$links = array(); 
preg_match($linkPattern, $fileContents, $links); 

$link = $links[3]; 

文件內容被認爲是在$ fileContents。 爲每個文件運行此代碼。 如果您需要收集所有IP地址和域比你可以將它們合併爲大數組:

$allIps = array(); 
$allLinks = array(); 

// after each run of the above code do: 
$allIps = array_merge($allIps, $ips); 
$allLinks[] = $link; 
+0

嗨,鏈接陣列是空的,你寫的代碼...漂亮的代碼順便說一句...有多個一個href行,這是足夠的,如果我只讀第一次出現,因爲它有域名... thx爲您的幫助。我怎麼修改...「?我使用foreach($ ips作爲$ key => $ a1){echo $ a1;} ..但我只是gettin」數組「顯示..所以這些2維數組?! – Heather 2011-04-28 23:17:51

+0

q2:也想知道$ linkPattern ='/href\w?\=\w?[\'"]{1}(.+?)[\'"]{1}/'; 和$ ipPattern ='/(?: 25 [0-5] | 2 [0-4] \ d | 1 \ d \ d | [1-9] \ d | \ d)(?:[。](? :25 [0-5] | 2 [0-4] \ d | 1 \ d \ d | [1-9] \ d | \ d)){3} /'; work? – Heather 2011-04-28 23:23:22

+0

when you get an output像數組,你可以將數組轉儲爲可讀格式來理解數據:var_dump($ a1);爲了獲得ip,你可能需要做$ ip = $ a1 [1]; – theduke 2011-04-28 23:34:57