Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Return nic nie zwraca
PiotrekM
post
Post #1





Grupa: Zarejestrowani
Postów: 130
Pomógł: 6
Dołączył: 20.12.2009

Ostrzeżenie: (0%)
-----


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?

Ten post edytował PiotrekM 1.02.2013, 16:02:46
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
Spawnm
post
Post #2





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




Wywołujesz is_video($url, ++$n); w 17 lini bez returna.
Go to the top of the page
+Quote Post
PiotrekM
post
Post #3





Grupa: Zarejestrowani
Postów: 130
Pomógł: 6
Dołączył: 20.12.2009

Ostrzeżenie: (0%)
-----


Cytat(Spawnm @ 1.02.2013, 16:06:18 ) *
Wywołujesz is_video($url, ++$n); w 17 lini bez returna.

Aaa... no jasne (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 13:50