2010-05-10 78 views
2

我有一個網址列表,可以任何格式。每行一個,用逗號隔開,有隨機文本在它們之間等的URL都來自2個不同的網站,以及具有相似的結構如何從php中的一段URL中提取信息?

在這個例子中,可以說,它看起來像這樣

Random Text - http://www.domain2.com/variable-value 
Random Text 2 - http://www.domain1.com/variable-value, http://www.domain1.com/variable-value, http://www.domain1.com/variable-value 

http://www.domain1.com/variable-value 
http://www.domain2.com/variable-value 
http://www.domain1.com/variable-value http://www.domain2.com/variable-value http://www.domain1.com/variable-value 

我需要提取2條信息。請檢查它的domain1或domain2和後面的「variable-」

因此,它應該創建一個多維數組,其中包含2個項目:domain + value。

這樣做的最好方法是什麼?

+0

將_value_始終是數字,或字母? – 2010-05-10 18:41:55

+2

字符值可以包含哪些限制?可能很難找到它的唯一字母和數字值 – Galen 2010-05-10 18:42:09

+0

的結尾。最終值將是任何不是字母或數字的字符,也可能是換行符 – Jack 2010-05-10 18:44:02

回答

1

這是一個提取網址的可能性。唯一的問題是,網址本身可能不包含逗號。所以,如果是足夠....

$lines = explode('\n', $urls); 

for($i = 0; $i < sizeof($lines); $i++) 
{ 
    if(preg_match_all("http:\\/\\/[^,]*variable-([^,]+)", $lines[$i], $matches)) 
    { 

    } 
} 

順便說一句...匹配存儲在$matches陣列英寸

P.S:編輯...我忘了逃避反斜槓,你應該搜索字符串行以確保正確的行爲...測試正則表達式在http://www.regex-tester.de/regex.html ...它只是與我的正則表達式。

P.P.S:經過進一步的研究,我發現這個網頁:http://internet.ls-la.net/folklore/url-regexpr.html。它包含url的正則表達式。您可以先使用它來提取網址,然後在第二步中,您可以瀏覽您的網址,並提取查找的可變信息。 variable-([\W]+)

+0

這不匹配任何東西:( – Jack 2010-05-10 18:48:01

+0

問題是,它不會總是每行1個鏈接。 – Jack 2010-05-10 18:57:58

0

preg_splitpreg_matchparse_url

// split urls 
$urls = preg_split('!,\s+!', 'http://www.domain1.com/variable-value, http://www.domain2.com/variable-value, http://www.domain3.com/variable-value'); 

// check for domain and path variable 
foreach ($urls as $url) { 

    $parts = parse_url($url); 
    // check domain: $parts['host']; 
    $matches = array(); 
    // check path: preg_match('!^/variable-([^/]+)!', $parts['path'], $matches) 
} 
0
$text = "http://www.domain1.com/variable-value1, http://www.domain2.com/variable-value2 http://www.domain1.com/variable-value3"; 
preg_match_all("/http:\\/\\/(.+?)\\/variable-([a-z0-9]+)/si", $text, $matches); 
print_r($matches); 

結果:

Array 
(
    [0] => Array 
     (
      [0] => http://www.domain1.com/variable-value1 
      [1] => http://www.domain2.com/variable-value2 
      [2] => http://www.domain1.com/variable-value3 
     ) 

    [1] => Array 
     (
      [0] => www.domain1.com 
      [1] => www.domain2.com 
      [2] => www.domain1.com 
     ) 

    [2] => Array 
     (
      [0] => value1 
      [1] => value2 
      [2] => value3 
     ) 

)