Regular expression in preg_match

Discussion in 'PHP' started by hoabuom, Mar 26, 2007.

  1. #1
    I have these strings:

    $url = 'http://www.youtube.com/watch?v=UTJXuvFEFfw';
    or
    $url = 'http://www.youtube.com/watch?v=3sap7_DI-U8&eurl=http%3A%2F%2Fwww%';
    or
    $url = 'http://www.youtube.com/watch?v=Sddm7RK4bhM&mode=related&search='

    preg_match('/watch\?v=whatishere', $url, $match);

    if(!$match[1]){
    die("Error no matches - wrong youtube page?");
    }
    return $match[1];


    What is the expression in preg_match to return v value in $match that works for all urls above?

    Thanks in advance.
     
    hoabuom, Mar 26, 2007 IP
  2. krakjoe

    krakjoe Well-Known Member

    Messages:
    1,795
    Likes Received:
    141
    Best Answers:
    0
    Trophy Points:
    135
    #2
    
    <?
    function get_utube_v( $uri )
    {
    	preg_match("/v=([a-zA-Z0-9_-]+)/", $uri, $v );
    	return $v[1] != "" ? $v[1] : "Not a valid uTube uri : $uri";
    }
    echo get_utube_v("'http://www.youtube.com/watch?v=UTJXuvFEFfw'");
    echo "<br >";
    echo get_utube_v('http://www.youtube.com/watch?v=3sap7_DI-U8&eurl=http%3A%2F%2Fwww%');
    echo "<br >";
    echo get_utube_v('http://www.youtube.com/watch?v=Sddm7RK4bhM&mode=related&search=');
    echo "<br >";
    echo get_utube_v('http://www.youtube.com/watch?a=Sddm7RK4bhM&mode=related&search=');
    ?>
    
    PHP:
     
    krakjoe, Mar 27, 2007 IP