Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Nieokreślony ciąg znaków w str_replace
Forum PHP.pl > Forum > Przedszkole
Rahael
Mam taki skrypt (poniżej). W formularzu wkleja się cały link z YT. Metodą POST przekazuję to do skryptu który obcina link do postaci "v=youtube_id". Jako że do wyświetlenia potrzeba v/youtube_id zastosowałem str_replace = na /. Problem pojawia się dopiero gdy po youtube_id pojawia się różny ciąg wysyłanych do linku metodą get. Na przykład v=youtube_id(&feature=branded, &feature=related, &feature=endscreen, itd).

I tutaj moje pytanie jak ustawić żeby ciąg po youtube_id podmienić na brak znaku. Rozumiem że przy użyciu str_replace ale nie wiem jak napisać informację w skrypcie żeby identyfikowało dowolny ciąg znaków.

  1. if (!empty($_POST['videoo'])){
  2.  
  3. $subject = $_POST['videoo'];
  4. $url = parse_url($subject);
  5. parse_str($url['query'], $query);
  6. $ciag = $url['query'];
  7. $pass = str_replace("=", "/", $ciąg);
  8.  
  9. $pwd1 = '<object width="560" height="315"><param name="movie" value="http://www.youtube.com/'.$pass.'"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/'.$pass.'" type="application/x-shockwave-flash" width="560" height="315" allowscriptaccess="always" allowfullscreen="true"></embed></object>';
  10.  
  11.  
  12. }else{
  13. echo '<form name="videoo" method="post" action="">';
  14. echo '<p><label for="videoo" style="display: inline-block; width: 200px; height: 10px;">Link do filmu z YouTube</label>';
  15. echo '<input onkeyup="na_male(this);" name="videoo" id="videoo" type="input"><br /></p>';
  16. echo '<input type="Submit" value="Zapisz"><br /></p>';
  17. echo '</form>';
  18. }


tutaj w nawiązaniu do mojego skryptu propozycja rozwiązania:
  1. $subject = $_POST['videoo'];
  2. $url = parse_url($subject);
  3. parse_str($url['query'], $query);
  4. $ciag = $url['query'];
  5. $pass = str_replace("=", "/", $ciąg);
  6. $pass1 = str_replace("& i tutaj identyfikacja dowolnego ciągu znaków", "", $pass);
  7.  



Od razu zaznaczam że próbowałem budować skrypt na preg_match i preg_match_all ale albo nie rozumiem działania albo popełniam głupie błędy które powodują brak poprawnego działania skryptu. Dlatego opieram się na str_replace.


Z góry dzięki za pomoc
b4rt3kk
Użyj:

  1. preg_replace('/=/', '/', $zmienna, 1)


Funkcja zatrzyma się po pierwszym znalezieniu i zamianie wzorca.
Rahael
Pomogło dzięki. A tak na przyszłość jak zdefiniować nieokreślony ciąg znaków. Chociaż link do manuala gdzie znajdę sam wskazówki.
b4rt3kk
Dowolny ciąg znaków symbolizuje .*

http://pl.wikibooks.org/wiki/PHP/Podstawy_...%84_regularnych
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.