Проблем с preg_match при YOUTUBE?

streleca_stz

Registered
Здравейте! Искам да ви попитам защо става така.. Значи използвам ето този preg_match за YOUTUBE клипчета:
PHP:
preg_match("/\.com\/watch\?v\=([a-z0-9]+)/si", $video['video'], $out);
echo '<iframe title="YouTube video player" class="youtube-player" type="text/html" width="605" height="375" src="http://www.youtube.com/embed/'.$out[1].'" frameborder="0" allowFullScreen></iframe><br />';
Обаче когато сложа някои клипчета не става.. А с някои става.. Просто не мога да разбера защо е така..

Ето пример за клип който не става..
http://www.youtube.com/watch?v=0Om5Xa_4vGE

И още нещо - можете ли да ми препоръчате проверка за линк, защото ползвам защитата htmlspecialchars и тя ми прави символа & в & ... ?
 
idevbg каза:
Я пробвай така.
Код:
preg_match("/v=([A-Za-z0-9\_\-]{11})/", $video['video'], $out);
Може ли да попитам какво промени, защото така работи? :)

--------------------

А относно това с & :S
 
Ами, честно казано, написах израза наново. Освен че сега търси точно 11 символа след v=, в позволените символи вкарах - и _, а при теб тея символи ги нямаше :)

& по принцип е валидния по стандарти вариант на &, защо ти е проблем? addslashes можеш да му вкарваш, но обикновено htmlspecialchars върши достатъчна работа :)
 
idevbg каза:
Ами, честно казано, написах израза наново. Освен че сега търси точно 11 символа след v=, в позволените символи вкарах - и _, а при теб тея символи ги нямаше :)

& по принцип е валидния по стандарти вариант на &, защо ти е проблем? addslashes можеш да му вкарваш, но обикновено htmlspecialchars върши достатъчна работа :)

Аха.. ами ако има клип който след v= има повече от 11 симовла? Знае ли се дали няма да измислят и с по-сложни линкове да направят от youtube..
 
Тогава ще го дадеш и ще ти го променим :) Смени си цифричката на каквото искаш или махни цялото {11} - пак ще работи :)
 

Back
Горе