2013-05-04 141 views
1

我试图从Google搜索结果中获得网址,但Google API不允许获得比前100个结果更多的内容,所以我想复制Google内容并将其粘贴到文件并使用preg_match_all来获得结果。不幸的是,我对正则表达式不擅长。来自谷歌搜索结果的正则表达式链接

有人可以帮助我吗?主要问题是链接没有“http://”。

$body="PHP – Wikipedia, wolna encyklopedia 
     pl.wikipedia.org/wiki/PHP‎ 
     PHP jest najczęściej stosowany do tworzenia skryptów po stronie serwera WWW, ale może być on również używany do przetwarzania danych z poziomu ... 
     Możliwości - Historia - Moduły - Składnia 
     PHP: Hypertext Preprocessor 
     php.net/‎Tłumaczenie strony 
     Server-side HTML embedded scripting language. It provides web developers with a full suite of tools for building dynamic websites: native APIs to Apache and ... 
     Downloads - Documentation - A simple tutorial - News Archive - 2012 
     PHP: Downloads 
     php.net/downloads.php‎Tłumaczenie strony 
     Binaries for other systems. We do not distribute UNIX/Linux binaries. Most Linux distributions come with PHP these days, so if you do not want to compile your ... 
     PHP Tutorial - W3Schools 
     www.w3schools.com/php/‎Tłumaczenie strony 
     Provides basic to advanced PHP functions. Users can also learn how to integrate PHP with other languages such as MYSQL, AJAX, and XML. 
     Kurs PHP 
     phpkurs.pl/‎ 
     Kurs programowania w języku PHP. Kurs ten ma za zadanie zaznajomić osobę kompletnie nieobeznaną z tym językiem na tyle, aby sama była w stanie napisać ... 
     Podstawy - Operacje na plikach - Ciągi znakowe (stringi) - Tablice"; 
    preg_match_all('/^(www\.)?[a-z0-9_\-]+.[a-z]+$/', $body, $match); 

print_r($match); 

结果:

Array ([0] => Array () [1] => Array ()) 

你能帮我解决这个问题?

+1

你知道'^'和'$'是什么意思吗?他们不仅仅是每个正则表达式中使用的装饰器。 – mario 2013-05-04 14:03:02

+0

我认为这是开始和结束的路线。我试着用这个'/^(www\.??[a-z0-9_\-]+.[a-z]+[^<]*$/'也。岑你指定它有什么问题吗? – WWW 2013-05-04 14:08:58

+1

在您的摘录中,链接不会从行首开始。前面有空格。如果使用'/ m'标志,'$'只能在行结束时使用。否则'^ $'属于主题的开始/结束,而不是行。 – mario 2013-05-04 14:11:29

回答

0

这将匹配大多数基本的url模式,并接受url的任何结尾。我在你的示例输入中对它进行了测试,它看起来像你想要的那样工作。

preg_match_all('/((?:(?!-)[a-z\d-]+[^-]\.)+[a-z]{2,6}.*)/', $body, $match)