Определение ссылок youtube

Тема в разделе "Как сделать...", создана пользователем RezzaSergio, 14 мар 2012.

  1. RezzaSergio

    RezzaSergio Создатель

    Заблокирован
    Регистр.:
    17 июн 2011
    Сообщения:
    20
    Симпатии:
    1
    Здравствуйте, требуется помощь.
    1. Из базы выбирается текст (допустим, $text)
    2. С помощью preg_match отыскиваем ссылки youtube
    PHP:
    if(preg_match('/https?:\/\/(?:[a-zA_Z]{2,3}.)?(?:youtube\.com\/watch\?)((?:[\w\d\-\_\=]+&(?:amp;)?)*v(?:<[A-Z]+>)?=([0-9a-zA-Z\-\_&;=]+))/i',$text))
    {
      
    //ссылка(ссылки) youtube присутствуют
    }
    else
    {
      
    //ссылок нет
    }
    3. Нужно сделать так, "текст который был <a href="тут ссылка">показать видео</a> текст который был"

    --------------------------------------------------------------------------
    НАШЁЛ РЕШЕНИЕ =)

    PHP:
    <?php
     
    // Replace Youtube URLs with embed code
    function embedYoutube($text)
    {
        
    $search '%          # Match any youtube URL in the wild.
            (?:https?://)?    # Optional scheme. Either http or https
            (?:www\.)?        # Optional www subdomain
            (?:              # Group host alternatives
              youtu\.be/      # Either youtu.be,
            | youtube\.com    # or youtube.com
              (?:            # Group path alternatives
                /embed/      # Either /embed/
              | /v/          # or /v/
              | /watch\?v=    # or /watch\?v=
              )              # End path alternatives.
            )                # End host alternatives.
            ([\w\-]{10,12})  # Allow 10-12 for 11 char youtube id.
     
     
            (?:              # Group unwanted &feature extension
                &feature=related      # Either &feature=related
            ) 
        ([\w\-]{0})      # Allow 0 Characters of &feature=related (hide)
     
     
            \b                # Anchor end to word boundary.
            %x'
    ;
     
        
    $replace '<object width="425" height="344">
            <param name="movie" value="http://www.youtube.com/v/$1?fs=1"</param>
            <param name="allowFullScreen" value="true"></param>
            <param name="allowScriptAccess" value="always"></param>
            <embed src="http://www.youtube.com/v/$1?fs=1"
                type="application/x-shockwave-flash" allowscriptaccess="always" width="425" height="344">
            </embed>
            </object>'
    ;
     
        return 
    preg_replace($search$replace$text);
    }
     
    $string 'This is the forum post content with some Youtube links:'."\n".
        
    'http://www.youtube.com/watch?v=NLqAF9hrVbY'."\n".
        
    'http://www.youtube.com/v/u1zgFlCw8Aw?fs=1&hl=en_US';
     
    echo 
    embedYoutube($string);
     
    ?>