Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Wyrażenie regularne
Forum PHP.pl > Forum > Przedszkole
ArekJ
Witam.
Mam sobie wyrażenie, które ma mi zamieniać link w tekście na napis Youtube. Działał on do momenty, gdy Youtube zmieniło się w tą nowszą wersję.
Kiedyś link wyglądał np. tak:
http://www.youtube.com/watch?v=nfNpL2p0xm8
Teraz wygląda tak:
http://www.youtube.com/watch#!playnext...p;v=YTc5DIG7ie4
Stare wyrażenie miałem takie:
  1. array('/(http:\/\/|http:\/\/www\.|www\.)youtube.com\/watch\?v=([0-9a-zA-Z_\-]+)/','Youtube'),

Z nowym kombinuje, jednak, że z wyrażeń jestem cienki mi nie wychodzi:
  1. array('/(http:\/\/|http:\/\/www\.|www\.)youtube.com\/watch\#!playnext=1&playnext_from=TL\&videos=([0-9a-zA-Z_\-]+)\&v=([0-9a-zA-Z_\-]+)/','Youtube'),

Proszę o pomoc smile.gif
Dzięki i pozdrawiam!
thek
Ale przecież z tego wrażenia co podałeś wyciąga Ci prawidłowe dane... Wziąłem kopiuj-wklej i Twoje wyrażenie wyciąga z podanego przez Ciebie linka 2 identyfikatory:
1) mWnHKDJvLfw
2) YTc5DIG7ie4
Tak więc o co Ci chodzi? Bo chyba przecież to chcesz wyciągnąć?
ArekJ
Cytat(thek @ 5.03.2010, 20:38:59 ) *
Ale przecież z tego wrażenia co podałeś wyciąga Ci prawidłowe dane... Wziąłem kopiuj-wklej i Twoje wyrażenie wyciąga z podanego przez Ciebie linka 2 identyfikatory:
1) mWnHKDJvLfw
2) YTc5DIG7ie4
Tak więc o co Ci chodzi? Bo chyba przecież to chcesz wyciągnąć?


Nie do końca.
Sprawdzam sobie po prostu czy link pasuje do wyrażenia i jak pasuje to wyświetlam link do Youtube.
thek
No to ja nadal nie widzę problemu. Jeśli choć jeden z tych dwóch pasuje do wzorca to wyświetl link. jako że to dwa kompletnie różne wyrażenia to zrłb coś na zasadzie:
  1. if( preg_match( wariant1, $matches ) ) {
  2. //tutaj link dla pierwszego wariantu korzystając ze zmiennej $matches
  3. } else {
  4. if( preg_match( wariant2, $matches ) ) {
  5. //tutaj link dla drugiego wariantu korzystając ze zmiennej $matches
  6. } else {
  7. //a tu ewentalnie coś gdy nie znalazło nic
  8. }
  9. }
lub
  1. if( preg_match( wariant1, $matches ) OR preg_match( wariant2, $matches ) ) {
  2. //tutaj operujesz na $matches
  3. } else {
  4. //a tu ewentalnie coś gdy nie znalazło nic
  5. }
Ale co do 2 wariantu nie jestem pewien czy zmienna $matches się nie nadpisze NULLEM jeśli wariant1 będzie prawidłowy a wariant2 nie. Sprawdź sobie to smile.gif

EDIT: Masz rację, ale ja tylko chciałem pokazać ideę czego ma dany preg_match tyczyć, bez kodu podanego na tacy. Niech sam trochę się wysili autor jeszcze. Jeśli oczywiście o to co ja pokazuję mu chodzi.
Fifi209
thek mi się wydawało że jako drugi argument preg_match przyjmuje string.
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.