我有一个像这样的字符串:
我想提取
Nnp82q3b844
它的一部分,即/ v /和第一个&。
之间的部分有没有简单的方法在PHP中执行此操作?
答案 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));