Ваше регулярное выражение неверно. Есть несколько вещей не так с этим. Теперь, насколько вы хотите, попробуйте это:
#http://(?:.*)youtube.com/v/([^/\#?]+)#
Теперь, почему, давайте посмотрим на регулярное выражение:
http://(?:.*)youtube.com
Вы ищете строку, которая начинается с http://
, имеет что-нибудь после (www.
, ww2.
или ничего).
/v/
Вы ищете /v/
в качестве начала URL.
([^/\\#?]+)
Вы ищете все остальное, вплоть до другого /
, строки запроса (?
) или якоря (#
). Это должно соответствовать идентификатору, который вы ищете.
Итак, это будет
if(preg_match("#http://(?:.*)youtube.com/v/([^/\#?]+)#", $row->n_texto, $matches){
$code = $image_to_thumb .= "http://i1.ytimg.com/vi/".$matches[1]."/0.jpg";
}
Если вы хотите найти все:
if(preg_match_all("#http://(?:.*)youtube.com/v/([^/\#?]+)#", $row->n_texto, $matches){
foreach ($matches[1] as $match) {
$code = $image_to_thumb .= "http://i1.ytimg.com/vi/".$match."/0.jpg";
}
}