E.G*_*.G. 14 php regex flash video
我想从一个object/embed html源获取视频网址.我读过我可以使用正则表达式来获取它,但我和正则表达式不是朋友
以下是我所拥有的:
<?php
function src($text) {
$text = str_replace('"', '', $text);
$text = str_replace('src=', '', $text);
$temporary = explode('<embed', $text);
$temporary = $temporary[1];
$temporary = explode(' ', trim($temporary));
return $temporary[0];
}
$html = '
<object width="180" height="220">
<param name="movie" value="http://www.domain.com/video/video1.swf"></param>
<embed src="http://www.domain.com/video/video1.swf" type="application/x-shockwave-flash" width="180" height="220"></embed>
</object>
';
echo src($html);
Run Code Online (Sandbox Code Playgroud)
这有效,但正则表达式更好吗?
我正在使用灯
Boo*_*eus 14
对于这种情况,正则表达式更好,因为它src可能永远不会出现在第一个属性,因此这将不起作用.
这是我的建议:
function src($html) {
if(preg_match('#<embed[^>]*?src=["\'](.*?)["\'](.*?)></embed>#si', stripslashes($html), $src)) {
return $src[1];
}
return ''; // or any other error if you need
}
echo src($html);
Run Code Online (Sandbox Code Playgroud)
将输出: http://www.domain.com/video/video1.swf
[^>]匹配括号内未包含的单个字符.[^>]匹配除以外的任何字符>
["\']比赛src="或src='
(.*?)点(.)表示匹配任何字符.星号(*)表示零次或多次.并且问号(?)意味着贪婪并且只要模式仍然匹配就继续.把它们放在一起,就意味着尝试匹配任何角色,零次或多次,并尽可能多地获得
/i 不区分大小写
这里有更多信息:
http://en.wikipedia.org/wiki/Regular_expression
http://www.regular-expressions.info/reference.html
| 归档时间: |
|
| 查看次数: |
892 次 |
| 最近记录: |