好的,我可以说我需要参与此链接:http://www.dailymotion.com/video/xnstwx_bmw-eco-pro-race_auto
我需要
[0] => xnstwx
[1] => bmw-eco-pro-race_auto
我正在尝试:preg_match('/video\/([A-Za-z0-9]+)_/i', $video['url'], $match);
我得到了:
[0] => video/xnstwx_
[1] => xnstwx
比我尝试的那样:preg_match('/video\/([A-Za-z0-9]+)_/([A-Za-z0-9-_]+)', $video['url'], $match);
我想你已经知道这是错的。
我总是无缘无故地逃避正则表达式,现在我正在尝试使用正则表达式备忘单,但现在我有点卡住了。)。
答案 0 :(得分:2)
有点晚了,但是:
<?php
$u = 'http://www.dailymotion.com/video/xnstwx_bmw-eco-pro-race_auto';
preg_match('/([A-Za-z0-9]+)_([A-Za-z0-9].+)/', $u,$m);
print_r($m);
?>
给出:
Array ( [0] => xnstwx_bmw-eco-pro-race_auto [1] => xnstwx [2] => bmw-eco-pro-race_auto )
答案 1 :(得分:1)
在(.+)
之后添加_
。这会捕获()
之后按_
分组的任何字符中的一个或多个。
preg_match('/video\/([A-Za-z0-9]+)_(.+)/i', $video['url'], $match);
var_dump($match);
array(3) {
[0]=>
string(34) "video/xnstwx_bmw-eco-pro-race_auto"
[1]=>
string(6) "xnstwx"
[2]=>
string(21) "bmw-eco-pro-race_auto"
}
有很多可能的方法可以做到这一点,但这只是我想到的第一个例子。
答案 2 :(得分:1)
preg_match('@video/([^_]+)_(.+)@', $video['url'], $match);
还有一个提示:在处理网址时不要使用/
作为正则表达式分隔符总是一个好主意,因此您不必转义模式中的所有斜杠。
答案 3 :(得分:1)
使用以下内容在$ match [1]和$ match [2]中获得匹配。
preg_match("/.*\/video\/([a-z0-9]+)_(.*)$/i", $video['url'], $match);
不需要带有i修饰符的A-Z,数组中的第一个元素始终是完全匹配的表达式,这就是预期结果位于第1和第2位的原因。
此致 菲尔,
编辑:没意识到我必须使用代码标签来显示转义斜杠!