谷歌网址上的后期处理

时间:2014-07-26 13:58:57

标签: php regex

我使用正则表达式从Google搜索结果中抓取了一些网址。它以下面给出的格式提供了链接。现在,我只想要这个计划和主持人。任何正则表达式的想法?我尝试了url_parse,但由于前缀'/ url?q =',它似乎不起作用。

/url?q=http://www.fertile-focus.com/&sa=U&ei=dTTTU7L2A4egugSY44LgAQ&ved=0CCsQFjAEOGQ&usg=AFQjCNEwG9ntbG0ZtqbqjJNSfVTlqQJYmg

/url?q=http://www.genetests.org/&sa=U&ei=dTTTU7L2A4egugSY44LgAQ&ved=0CDgQFjAGOGQ&usg=AFQjCNFiux9o5YIUGP4P8B_oG_J6iD1Y6g

现在只需要

http://www.fertile-focus.com
http://www.genetests.org

2 个答案:

答案 0 :(得分:1)

我使用parse_urlparse_str来实现此目的而不是正则表达式。

<?php
    $url = "/url?q=http://www.fertile-focus.com/&sa=U&ei=dTTTU7L2A4egugSY44LgAQ&ved=0CCsQFjAEOGQ&usg=AFQjCNEwG9ntbG0ZtqbqjJNSfVTlqQJYmg";
    $query = parse_url($url, PHP_URL_QUERY);
    parse_str($query,$result);
    echo $result['q'];

DEMO

答案 1 :(得分:0)

正则表达式匹配上面提到的/url?q=之前提到的网址,

\/url\?q=\K.*?(?=\/&)

DEMO

OR

www\.[^.]*\.(?:org|com)

DEMO

您的PHP代码将是,

<?php
$url = <<< 'EOT'
/url?q=http://www.fertile-focus.com/&sa=U&ei=dTTTU7L2A4egugSY44LgAQ&ved=0CCsQFjAEOGQ&usg=AFQjCNEwG9ntbG0ZtqbqjJNSfVTlqQJYmg

/url?q=http://www.genetests.org/&sa=U&ei=dTTTU7L2A4egugSY44LgAQ&ved=0CDgQFjAGOGQ&usg=AFQjCNFiux9o5YIUGP4P8B_oG_J6iD1Y6g
EOT;
$regex =  '~\/url\?q=\K.*?(?=\/&)~';
preg_match_all($regex, $url, $matches);
var_dump($matches);
?>

<强>输出:

array(1) {
  [0]=>
  array(2) {
    [0]=>
    string(28) "http://www.fertile-focus.com"
    [1]=>
    string(24) "http://www.genetests.org"
  }
}