Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Explode z bazy danych
Forum PHP.pl > Forum > Przedszkole
Matado
Mam mały problem z wyciągnięciem części tekstu. Chcę pobrać id filmu z YouTube. Id filmu znajduje się po tym tekście '?v=' . Z poziomu pliku PHP, kiedy wyciągam za pomocą explode() , jest wszystko OK. Normalnie wyświetla wyciągniętą część.

link ma taką postać np.
Kod
http://www.youtube.com/watch?v=m8I7DVjb8TM


Ale kiedy chcę pobrać z bazy danych link do filmu, wszystko jest w porządku, tylko podczas wyświetlania tekstu zamiast id filmu otrzymuję "Array", czyli wyświetla tablicę zamiast otrzymanego tekstu.

Jak to rozwiązać?

  1. <?php
  2.  
  3. class Split
  4. {
  5. public $link;
  6.  
  7. public function cut()
  8. {
  9. $pdo= new PDO ('mysql:host=localhost;dbname=test','root','');
  10. $stmt= $pdo-> prepare ('SELECT link FROM videos WHERE id=:id');
  11. $stmt-> bindValue (':id', 1 , PDO::PARAM_INT);
  12. $stmt-> execute();
  13.  
  14. while ($row= $stmt-> fetch())
  15. {
  16. $this-> link= explode ('?v=', $row['link']);
  17. }
  18.  
  19. $stmt-> closeCursor();
  20. }
  21.  
  22. public function show()
  23. {
  24. return $this-> link;
  25. }
  26.  
  27. }
  28.  
  29. $link= new Split;
  30. $link-> cut();
  31. echo $link-> show();
  32.  
  33. ?>
r4xz
echo $link[1]
Merko
Chyba raczej 

$wynik = $link-> show();

echo $wynik[1];

tak mi się zdaje

Matado
Faktycznie. Zapomniałem, że wynik w tablicy otrzymuję. Ok śmiga. Dzięki,
Fafu
Lepiej skorzystaj z wyrażenia regularnego stąd: http://forum.php.pl/index.php?showtopic=11...20&start=20
  1. #
  2. // szukanie id filmu
  3. if(preg_match('/watch?v=([a-zA-Z0-9_]+)/i', $str, $matches))
  4. {
  5. $idMovie=$matches[1];
  6. }
gcdreak
Nieprawda!
Lepiej będzie jak skożystasz z explode()
@Fafu
Z manuala wyrażnie wynika, że preg_* są wolniejsze niż np: explode()
Fafu
1. skorzystasz - razi w oczy
2. a co jak ktoś da link np
watch?v=JsigDKE14uI&feature=related
?
to wg explode wytnie razem z &feature=related a w wyrażeniu regularnym nie
Merko
to dajemy
  1. $test = @explode("&", $wynik[1]);
  2. if($test[1] == '')
  3. $id_link = $wynik[1];
  4. else
  5. $id_link = $test[0];
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.