2013-02-15 154 views
0

我有一個網站爬蟲,顯示網址列表,但問題是我不能爲我的生活得到最後的正則表達式很正確。 所有URL最終列爲:正則表達式不太正確

http://www.website.org/page1.html&--EFTTIUGJ4ITCyh0Frzb_LFXe_eHw 
http://website.net/page2/&--EyqBLeFeCkSfmvA7p0cLrsy1Zm1g 
http://foobar.website.com/page3.php&--E5WRBxuTOQikDIyBczaVXveOdRFg 

的URL都可以是不同的,這似乎是靜態的唯一的事情就是&符號。 如何去掉&符號及其以外的所有符號?

以下是我與上述結果的嘗試:

function getresults($sterm) { 
$html = file_get_html($sterm); 
$result = ""; 
// find all span tags with class=gb1 
foreach($html->find('h3[class="r"]') as $ef) 
{ 
$result .= $ef->outertext . '<br>'; 
} 
return $result; 
} 

function geturl($url) { 
    $var = $url; 
    $result = ""; 

preg_match_all ("/a[\s]+[^>]*?href[\s]?=[\s\"\/url?q=\']+". 
       "(.*?)[\"\']+.*?>"."([^<]+|.*?)?<\/a>/",    

       $var, $matches); 

$matches = $matches[1]; 

foreach($matches as $var) 
{  
    $result .= $var."<br>"; 
} 

echo preg_replace('/sa=U.*?usg=.*?AFQjCN/', "--" , $result); 

} 
+0

Google for」URL [or URI] regular expression「。 – KingCrunch 2013-02-15 00:26:15

+0

不要使用正則表達式來解析HTML!使用DOM解析器。 – 2013-02-15 00:35:13

+0

我是 - 網址中還有一些垃圾因爲某些原因而被清除。 – user1823055 2013-02-15 00:52:39

回答

1

如果URL總是以相同的格式,使用爆炸:

<?php 
$tmp = explode("&", "http://foobar.website.com/page3.php&--E5WRBxuTOQikDIyBczaVXveOdRFg"); 
?> 

$ tmp [0] should content「http://foobar.website.com/page3.php 「和 $ tmp [1] should content」--E5WRBxuTOQikDIyBczaVXveOdRFg「

+0

http://是關於唯一的東西,除了那個點之外,其他所有東西都是一樣的,直到&符號可以是任何類型的url。在url之後它總是隨機的字符。 – user1823055 2013-02-15 03:01:57

0

一個簡單的方法&字符後,除去一切:

$result = substr($result, 0, strpos($result, '&')); 
+0

這似乎在某種程度上工作了一下,但是發生了什麼事情呢,一切都變成了一個大的長包裹着的字符串,有幾個網址,與之前的那些線路網址相反。任何建議? – user1823055 2013-02-15 08:59:23