регулярное выражение php для видео swf

Я хочу получить URL-адрес видео из источника / 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); 

это работает, но лучше ли в регулярном выражении?

я использую лампу

Регулярное выражение лучше для этого случая, потому что 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); 

выведет: http://www.domain.com/video/video1.swf

[^>] соответствует одному символу, который не содержится в скобках. [^>] соответствует любому символу, отличному от >

["\'] соответствует src=" или src='

(.*?) Точка (.) Означает соответствие любому символу. Звезда (*) означает ноль или более раз. И вопросительный знак (?) Означает быть жадным и продолжаться до тех пор, пока шаблон все еще совпадает. Поместите все это вместе, это означает, что нужно попробовать и сопоставить любой символ, ноль или более раз, и получить как можно больше

/i не чувствителен к регистру

Вот еще информация:

http://en.wikipedia.org/wiki/Regular_expression

http://www.regular-expressions.info/reference.html

Почему бы вам не использовать парсер DOM; он предназначен для выполнения такого рода работ.

 $dom = new DOMDocument; $dom->loadHTML($html); $embed = $dom->getElementsByTagName('embed'); if ($embed->length) { $embed = $embed->item(0); if ($embed->hasAttribute('src')) { $src = $embed->getAttribute('src'); // `$src` holds the `src` attribute of the `embed` element. } } 

CodePad .