正则表达式以提取包含在字符串中的URL

时间:2012-12-12 14:53:06

标签: php regex url

我环顾了一会儿,但可能我不能用适当的关键字“谷歌”,所以我在这里问。我需要使用regexp(php)

从字符串中提取url

一个简单的例子应该会有所帮助:

目标:提取网址http://en.wikipedia.org/wiki/Kettle

基本字符串:

/url?q=http://en.wikipedia.org/wiki/Kettle&sa=U&ei=VpnIUP22Js3B0gWKhoCgCQ&ved=0CB0QFjAA&usg=AFQjCNGS7-bieZB8Vh7xR5sjOy-KT86ANQ

2 个答案:

答案 0 :(得分:4)

有比正则表达式更好的选项来做到这一点。例如,PHP提供了两个函数parse_urlparse_str,它们完全符合您的要求:

$query = parse_url($string, PHP_URL_QUERY);
parse_str($query, $parameters);
$result = $parameters['q'];

当然,这只是除非您需要使用正则表达式,因为这是您提供的所有框架,或者因为它是某种练习。

答案 1 :(得分:0)

测试此正则表达式:/q=([^&]+)/i

<?php
  $url = '/url?q=http://en.wikipedia.org/wiki/Kettle&sa=U&ei=VpnIUP22Js3B0gWKhoCgCQ&ved=0CB0QFjAA&usg=AFQjCNGS7-bieZB8Vh7xR5sjOy-KT86ANQ';
  $pattern = '/q=([^&]+)/i';
  preg_match($pattern, $url, $res);
  echo $res[1];
?>