正则表达式在PHP中解析URL类型字符串

时间:2010-03-10 13:27:58

标签: php regex

我有一个像这样的字符串:

  

http://www.youtube.com/v/Nnp82q3b844&hl=en_US&fs=1&

我想提取

  

Nnp82q3b844

它的一部分,即/ v /和第一个&。

之间的部分

有没有简单的方法在PHP中执行此操作?

3 个答案:

答案 0 :(得分:8)

在这种情况下,您不需要正则表达式,您可以使用parse_url函数来完成工作。

<?php
$url = 'http://username:password@hostname/path?arg=value#anchor';

print_r(parse_url($url));

echo parse_url($url, PHP_URL_PATH);
?>

以上示例将输出:

Array
(
   [scheme] => http
   [host] => hostname
   [user] => username
   [pass] => password
   [path] => /path
   [query] => arg=value
   [fragment] => anchor
)
/path

答案 1 :(得分:2)

是的,他不应该太难看看here供你参考或理解我的答案

之后的正则表达式

这样的事情应该成为

preg_match('|http://www.youtube.com/v/([^&]+)&hl=en_US&fs=1&|', $url, $match );
var_dump($match[1]);

[^&]+表示基本上不是一个或一个不是'&amp;'的字符,'[]'定义一些字符可能性[^]使其反转所以任何字符不在括号中,+表示1或更多的性格。

但你最好自己去看看吧!

我真的建议你好好看看正则表达式,因为它可以真正节省你的工作时间,一旦你了解它的工作原理,它就真的有用!

答案 2 :(得分:1)

$str="http://www.youtube.com/v/Nnp82q3b844&hl=en_US&fs=1&";
$s = parse_url($str);
$t = explode("/", $s["path"]);
print preg_replace("/&.*/","",end($t));