PHP Regex & YouTube - PullRequest
       13

PHP Regex & YouTube

0 голосов
/ 02 ноября 2009

Я пишу временный PHP-скрипт для обновления базы данных MySQL моего форума vBulletin.

Вот что он делает. Он находит любую запись, которая имеет код [youtube] [/ youtube]. Затем он должен заменить этот код ссылкой на видео на YouTube.

Итак, вот пример того, что я должен взять:

$string = <<<END
Hi everyone! Check out this video that I just found on YouTube!

[youtube]<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/Md1E_Rg4MGQ&hl=en&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/Md1E_Rg4MGQ&hl=en&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object>[/youtube]
END;

И я должен сделать так, чтобы это выглядело так:

[URL=http://www.youtube.com/watch/?v=Md1E_Rg4MGQ]http://www.youtube.com/watch/?v=Md1E_Rg4MGQ[/URL]

У меня болит голова от работы с Regex. У меня недостаточно опыта с Regex, чтобы понять, что делать.

Это должно выглядеть примерно так:

$string = preg_replace("#\[youtube\]?????\[/youtube\]#i", "[URL=http://www.youtube.com/watch?v=$1]http://www.youtube.com/watch?v=$1[/URL]", $string);

Помогите, пожалуйста! ^ _ ^

1 Ответ

0 голосов
/ 02 ноября 2009

Что-то вроде этого возможно?

$string = preg_replace('#\[youtube\].*?name="movie" value="(.*?)".*?\[/youtube\]#i', "[URL=$1]$1[/URL]", $string);

Обратите внимание, что это ограничено тем, что ожидает точный формат строки name="movie" value="????????????????" - технически, есть другие допустимые конструкции HTML с тем же значением, но с другим порядком и т. Д. Идеальным решением было бы использование некоего DOM-парсера. чтобы получить значение атрибута фильма, но если вы знаете, что люди всегда будут использовать этот точный формат (т. е. если копировать / вставить с YouTube всегда есть или тому подобное), то регулярного выражения может быть достаточно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...