Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wyciąganie ID z linka youtube, Wyciąganie ID z linka youtube na preg_replace
slawiz
post 27.06.2012, 11:25:59
Post #1





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 27.06.2012

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


Witam potrzebuje pomocy otóż chce napisać skrypt który będzie wyciągał ID youtube z filmiku.

Na razie wymyśliłem coś takiego:

  1. $text2 = 'http://www.youtube.com/watch?v=EztDIotz7Nc&feature=related';
  2.  
  3.  
  4. $stalal = preg_replace("#\http://(?:www\.)?youtube.com/watch\?v=#",'',$text2);
  5.  
  6.  
  7. echo '<iframe title="YouTube video player" width="480" height="390" src="http://www.youtube.com/embed/' .$stalal. '" frameborder="0" allowfullscreen></iframe> ';



ale musze jeszcze usunąć "feature=related" z "$stalal" poniewarz zostaje "EztDIotz7Nc&feature=related"

Proszę o pomoc, z góry dziękuje smile.gif
Go to the top of the page
+Quote Post
nospor
post 27.06.2012, 11:31:54
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




jaki problem użyć str_replace i zamieniać to co chcesz na nic czyli na '' ?


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
slawiz
post 27.06.2012, 11:48:06
Post #3





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 27.06.2012

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


Można i tak ale czasami po ID youtube znajduję się coś innego, np: feature=related a czasami feature=relmfu wiec lepiej by było opuścić 11 znaków a usunąć wszystkie kolejne w preg_replace, Dodam jeszcze że jestem zielony w php i nie mam pojęcia czy się tak da :/
Go to the top of the page
+Quote Post
Shido
post 27.06.2012, 11:51:15
Post #4





Grupa: Zarejestrowani
Postów: 121
Pomógł: 22
Dołączył: 22.06.2012

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


  1. preg_match('%(?:youtube(?:-nocookie)?\.com/(?:[^/]+/.+/|(?:v|e(?:mbed)?)/|.*[?&]v=)|youtu\.be/)([^"&?/ ]{11})%i', $link, $match))
  2. $yt_id = $match[1];

O ile czegoś nie powaliłem to on wyciagnie ID, niezaleznie od tego czy po ID cos jest czy nie.

Używam tego tak:
  1. preg_match_all('/[youtube](.*)[\/youtube]/isU',$in,$out);
  2. foreach($out[1] as $wew)
  3. {
  4. if (preg_match('%(?:youtube(?:-nocookie)?\.com/(?:[^/]+/.+/|(?:v|e(?:mbed)?)/|.*[?&]v=)|youtu\.be/)([^"&?/ ]{11})%i', $wew, $match))
  5. {
  6. $yt_id = $match[1];
  7. }
  8. else
  9. {
  10. $yt_id = $wew;
  11. }
  12. $in = str_replace('[youtube]'.$wew.'[/youtube]', '<iframe title="YouTube video player" class="youtube-player" type="text/html" width="440" height="350" src="http://www.youtube.com/embed/'.$yt_id.'" frameborder="0" allowFullScreen></iframe>', $in);
  13. }

w $in mam stringa z całym tekstem.
Dzieki temu niezaleznie czy w w tagach [youtube] będzie tylko ID, czy cały link to i tak przerobi go na YTplayera

Ten post edytował Shido 27.06.2012, 11:52:58


--------------------
Sorka za błędy ort. jak coś dajcie znać na PW to popoprawiam.
Go to the top of the page
+Quote Post
slawiz
post 27.06.2012, 12:16:45
Post #5





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 27.06.2012

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


jak podałeś mi to:


  1. preg_match_all('/[youtube](.*)[\/youtube]/isU',$in,$out);
  2. foreach($out[1] as $wew)
  3. {
  4. if (preg_match('%(?:youtube(?:-nocookie)?\.com/(?:[^/]+/.+/|(?:v|e(?:mbed)?)/|.*[?&]v=)|youtu\.be/)([^"&?/ ]{11})%i', $wew, $match))
  5. {
  6. $yt_id = $match[1];
  7. }
  8. else
  9. {
  10. $yt_id = $wew;
  11. }
  12. $in = str_replace('[youtube]'.$wew.'[/youtube]', '<iframe title="YouTube video player" class="youtube-player" type="text/html" width="440" height="350" src="http://www.youtube.com/embed/'.$yt_id.'" frameborder="0" allowFullScreen></iframe>', $in);
  13. }


to teraz żeby otrzymać YTplayer

musze:

  1. $in = 'link yt';
  2. echo $in;


Czy źle ?
Go to the top of the page
+Quote Post
Shido
post 27.06.2012, 12:34:02
Post #6





Grupa: Zarejestrowani
Postów: 121
Pomógł: 22
Dołączył: 22.06.2012

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


To co podałem jest przystosowane do bbcoda
[youtube]link[/youtube] by wychwycić to w jakims tekście ( korzystam z tego w newsach ).
W tym przypadku pod $in dajesz jakiegoś stringa np:
  1. $in = 'Ala ma kota, a oto pierwsze nagranie tego kota: [youtube]link[/youtube] Fajny, prawda?';

Wtedy jak na koniec wyswietlisz $in to wyswietli ci tekst, oraz filmik w miejscu linka.


Ale jeżel ichcesz uzyskac tylko link, to to ci powinno działać:
  1. $link = 'link do yt';
  2.  
  3. if (preg_match('%(?:youtube(?:-nocookie)?\.com/(?:[^/]+/.+/|(?:v|e(?:mbed)?)/|.*[?&]v=)|youtu\.be/)([^"&?/ ]{11})%i', $link, $match))
  4. {
  5. $yt_id = $match[1];
  6. }
  7. else
  8. {
  9. $yt_id = $wew;
  10. }
  11.  
  12. echo ('<iframe title="YouTube video player" class="youtube-player" type="text/html" width="440" height="350" src="http://www.youtube.com/embed/'.$yt_id.'" frameborder="0" allowFullScreen></iframe>');


Ten post edytował Shido 27.06.2012, 12:40:48


--------------------
Sorka za błędy ort. jak coś dajcie znać na PW to popoprawiam.
Go to the top of the page
+Quote Post
slawiz
post 27.06.2012, 12:37:03
Post #7





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 27.06.2012

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


Wielkie dzięki, problem rozwiązany smile.gif Trzymaj Pomógł smile.gif
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 14:30