php preg匹配正则表达式ahref url

时间:2017-03-16 10:27:40

标签: php

我使用刮刀从结果网络中获取href,我得到了这个:

href="/url?q=https://signup.euw.leagueoflegends.com/fr/signup/index%3Frealm_key%3Deuw&sa=U&ved=0ahUKEwiuzqft5trSAhXBPRoKHbpXDMUQjBAIHjAD&usg=AFQjCNEYfGG0WY7wMdmBC-sxVjOWeUliXg"

/url?q=https://signup.euw.leagueoflegends.com/fr/signup/index%3Frealm_key%3Deuw&sa=U&ved=0ahUKEwiuzqft5trSAhXBPRoKHbpXDMUQjBAIHjAD&usg=AFQjCNEYfGG0WY7wMdmBC-sxVjOWeUliXg

href="/url?q=http://euw.leagueoflegends.com/fr/news/&sa=U&ved=0ahUKEwiuzqft5trSAhXBPRoKHbpXDMUQjBAIIDAC&usg=AFQjCNExC7Mbonp2YirFtmf4gMFAjvA03A"

...

我只得到了这个:

preg_match("/href=\"(.*?)\"/i", $test, $matches);

但我不知道如何在“/ url?q”和“& amp”之间只获取网址

我试过这样但是不起作用我没有结果:

preg_match("/href=/url?q\"(.*?)\"/i", $test, $matches);

3 个答案:

答案 0 :(得分:1)

或许最好获取href,然后将URL明确解析为:

<?php

$s = '/url?q=http://euw.leagueoflegends.com/fr/news/&amp;sa=U&amp;ved=0ahUKEwiuzqft5trSAhXBPRoKHbpXDMUQjBAIIDAC&amp;usg=AFQjCNExC7Mb';

$arr = array();

//first, get the query string
$qs = parse_url(html_entity_decode($s));

//parse query string and isolate the parameter 'q'
parse_str($qs['query'], $arr);

print($arr['q']);

?>

这会产生http://euw.leagueoflegends.com/fr/news/

答案 1 :(得分:1)

这应该可以解决问题

preg_match(&#34; / href = \&#34; \ / url \?q \ =(。*)\&#34; / i&#34;,$ test,$ matches);

答案 2 :(得分:1)

工作正常

 <?php
    $url='href="/url?q=https://signup.euw.leagueoflegends.com/fr/signup/index%3Frealm_key%3Deuw&amp;sa=U&amp;ved=0ahUKEwiuzqft5trSAhXBPRoKHbpXDMUQjBAIHjAD&amp;usg=AFQjCNEYfGG0WY7wMdmBC-sxVjOWeUliXg"';
    preg_match('/href="(.*)"/', $url, $matches);

    print_r($matches[1]);
    ?>