Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Return nic nie zwraca
Forum PHP.pl > Forum > PHP
PiotrekM
Witam,
mam dziwny problem.
Napisałem funkcję do sprawdzania sprawdzania adresów z vimeo i youtube.

  1. function is_video($url, $n = 0)
  2. {
  3. $patterns = array(
  4. '#http://(\w+.)?vimeo.com/(\d+)$#i', #vimeo
  5. '#http://(\w+.)?youtube.com/watch\?v=(\w+)$#', #youtube
  6. );
  7.  
  8. if(preg_match($patterns[$n], $url))
  9. {
  10. return true;
  11. #echo 'działa';
  12. }
  13. else
  14. {
  15. if($n < (count($patterns)-1))
  16. {
  17. is_video($url, ++$n);
  18. }
  19. }
  20. return false;
  21. }
  22.  
  23. var_dump(is_video('http://www.youtube.com/watch?v=qpff9If1J_g'));


dlaczego tak się dzieje?
funkcja powinna zwrócić true, ale zwraca false... myślałem, że coś z regexami pochrzaniłem, ale nie... gdy w pierwszego IFa wstawie echo to wiadomość jest normalnie wyświetlana...

edit:
nie wiem, dlaczego napisałem to rekurencyjnie - zamienie na pętle i dam znać, czy działa.

edit 2:
ok, teraz działa
  1. function is_video($url)
  2. {
  3. $patterns = array(
  4. 'vimeo' => '#http://(\w+.)?vimeo.com/(\d+)$#i',
  5. 'youtube' => '#http://(\w+.)?youtube.com/watch\?v=(\w+)$#',
  6. );
  7.  
  8. foreach($patterns as $key => $value)
  9. {
  10. if(preg_match($value, $url))
  11. {
  12. return true;
  13. }
  14. }
  15. return false;
  16. }


Ale z ciekawości, mógłby ktoś wytłumaczyć, dlaczego rekurencyjnie nie działało?
Spawnm
Wywołujesz is_video($url, ++$n); w 17 lini bez returna.
PiotrekM
Cytat(Spawnm @ 1.02.2013, 16:06:18 ) *
Wywołujesz is_video($url, ++$n); w 17 lini bez returna.

Aaa... no jasne smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.