我使用正则表达式从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
答案 0 :(得分:1)
我使用parse_url
和parse_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'];
答案 1 :(得分:0)
正则表达式匹配上面提到的/url?q=
之前提到的网址,
\/url\?q=\K.*?(?=\/&)
OR
www\.[^.]*\.(?:org|com)
您的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"
}
}