2012-05-21 2 views
0

Я работаю над парсером кода встраивания Youtube и Vimeo, я пытаюсь решить проблему с помощью регулярных выражений.Youtube и Vimeo Вставить код Parser с PCRE Regex

Я нашел два шаблона, и они работают с функцией eregi(), но, к сожалению, не работают с preg_match(). Дает ошибку «Делимер не должен быть буквенно-цифровой или обратной косой чертой».

Как преобразовать эти шаблоны из POSIX в PCRE?

Для Youtube;

\/v\/(.{11})|\/embed\/(.{11}) 

Для Vimeo;

player\.vimeo\.com\/video/([0-9]*)" 
+0

Последняя двойная кавычка в конце - это ошибка копирования-вставки? – jadkik94

ответ

0

Это для YouTube: $pattern = '/\/v\/(.{11})|\/embed\/(.{11})/';

И это для Vimeo: $pattern = '/player\.vimeo\.com\/video\/([0-9]*)/';

При использовании PCRE, убедитесь, что вы заключите выражение в /expression/ (косой черты), а также избежать всех /. Я заметил, что вы иногда это делаете, иногда у вас нет ...

0

Я нашел this one полезным в месте я помогаю развиваться. Спасибо и кредит зайдите в ridgerunner.

// Linkify youtube URLs which are not already links. 
function linkifyYouTubeURLs($text) { 
    $text = preg_replace('~ 
     # Match non-linked youtube URL in the wild. (Rev:20111012) 
     https?://   # Required scheme. Either http or https. 
     (?:[0-9A-Z-]+\.)? # Optional subdomain. 
     (?:    # Group host alternatives. 
      youtu\.be/  # Either youtu.be, 
     | youtube\.com # or youtube.com followed by 
      \S*    # Allow anything up to VIDEO_ID, 
      [^\w\-\s]  # but char before ID is non-ID char. 
     )     # End host alternatives. 
     ([\w\-]{11})  # $1: VIDEO_ID is exactly 11 chars. 
     (?=[^\w\-]|$)  # Assert next char is non-ID or EOS. 
     (?!    # Assert URL is not pre-linked. 
      [?=&+%\w]*  # Allow URL (query) remainder. 
      (?:    # Group pre-linked alternatives. 
      [\'"][^<>]*> # Either inside a start tag, 
      | </a>   # or inside <a> element text contents. 
     )    # End recognized pre-linked alts. 
     )     # End negative lookahead assertion. 
     [?=&+%\w-]*  # Consume any URL (query) remainder. 
     ~ix', 
     '<a href="http://www.youtube.com/watch?v=$1">YouTube link: $1</a>', 
     $text); 
    return $text; 
} 

Вы должны убрать все, что от вас требуется, и обрабатывать все стили ссылок на YouTube. Вимео не должно быть слишком тяжелым оттуда.

Смежные вопросы