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.
<? 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: