Php 使用正则表达式分析url值时出错

Php 使用正则表达式分析url值时出错,php,regex,Php,Regex,我正在使用正则表达式解析url。有些URL没有完全显示。我正在使用以下代码 如果$string值在后面,则它正在工作 $string= "[video width="1280" height="720" mp4="http://egghead-site.s3.amazonaws.com/samples/DOS.mp4" title="DOS Software"][/video]" ; 如果mp4值在后面,则它不起作用。它只返回半个url $string =[video width="1280

我正在使用正则表达式解析url。有些URL没有完全显示。我正在使用以下代码

如果$string值在后面,则它正在工作

$string= "[video width="1280" height="720" mp4="http://egghead-site.s3.amazonaws.com/samples/DOS.mp4" title="DOS Software"][/video]" ; 
如果mp4值在后面,则它不起作用。它只返回半个url

$string =[video width="1280" height="720" mp4="http://egghead-site.s3.amazonaws.com/samples/Colon%20Health%20Final%20V3.mp4" title="Synergi" ][/video]";  

$imageurl = !empty( $string ) ? preg_match_all('@((https?://)?([-\w]+\.[-\w\.]+)+\w(:\d+)?(/([-\w/_\.]*(\?\S+)?)?)*)@', $string , $match) : '';

return isset($match[0][0]) ? ut_portfolio_add_http($match[0][0]) : '';

我想获取视频url。我是regex新手,所以我坚持到了这一点。请让我知道在这两种情况下如何获得它。

我只是对您的正则表达式做了一个小改动,它似乎完全符合您的要求。请看这里:

((https?:\/\/)+(.+\.[-\w\.]+)+\w(:\d+)?(/([-\w/_\.]*(\?\S+)?)?)*)

请您编写一个没有语法错误的示例代码。那么它对第一个字符串是如何工作的?代码正在工作,但它只显示了半个url@user3885484。难怪,您在换行符上有它的一部分。此外,您的正则表达式远未与url匹配。可能与url重复