Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Usuwanie podciagu z ciagu znakow
Forum PHP.pl > Forum > Przedszkole
phpion
Czesc!
Mam problem. W wyrazeniach regularnych nigdy nie bylem omnibusem i mam taki oto problem. Z linku postaci:
Kod
http://serwer.pl/plik.php?zmienna1=wartosc1&SID=123456789&zmienna2=wartosc2

chcialbym usunac caly podciag dotyczacy sesji czyli &SID=123456789 tudziez SID=123456789&. Czyli w efekcie chcialbym dostac link postaci:
Kod
http://serwer.pl/plik.php?zmienna1=wartosc1&zmienna2=wartosc2

Oczywiscie miejsce wystapienia SID w linku jest rozne oraz ilosc zmiennych przed i po nie jest z gory ustalona. Pomoze mi ktos?
Pozdrawiam!
pirat
a bez wyrazen regularnych moze byc ?
  1. <?php
  2.  
  3. $zmienna = ('http://serwer.pl/plik.php?zmienna1=wartosc1&SID=7a671e34266c5a0af0c9d23a3c37e17f&zmienna2=wartosc2');
  4. $pozycja = strpos($zmienna, '&SID');
  5. $pcz = substr($zmienna, 0, $pozycja);
  6. $dcz = substr($zmienna, $pozycja+37); //dlugosc znakow sesji 32 + 4 znaki '&sid' + znak =
  7. echo $pcz.$dcz;
  8.  
  9. ?>


nie zadziała jeżeli SID wystąpi zaraz po ? -> wtedy trzeba będzie usprawnić kod
matrach
Oto wyrażenie regularne:
  1. <?php
  2. $text = "http://serwer.pl/plik.php?zmienna1=wartosc1&SID=123456789&zmienna2=wartosc2";
  3. $text = preg_replace('/(?:&)?SID=(?:[\d\w]*)(&)?/', "$1", $text);
  4. echo $text;
  5. ?>

Jeśli Sid jest na początku to zostanie '?&...' ale to chyba nie będzie sprawiało problemu.
piotrekkr
  1. <?php
  2.  
  3. $adres="http://serwer.pl/plik.php?zmienna1=wartosc1&SID=123456789&zmienna2=wartosc2";
  4. preg_replace("/(\?|&)SID=[0-9a-zA-Z]*/","",$adres);
  5.  
  6. ?>


sproboj tego
Gość_phpion.com
matrach dzieki! faktycznie w przypadku linku postaci
Kod
http://serwer.pl/plik.php?SID=123456789&zmienna1=wartosc1&zmienna2=wartosc2

w wyniku otrzymujemy:
Kod
http://serwer.pl/plik.php?&zmienna1=wartosc1&zmienna2=wartosc2

no ale wystarczy potem przeleciec ten ciag
Kod
str_replace("?&", "?", $ciag)

i bedzie git.
piotrekkr: w twoim przypadku ten link bedzie mial postac:
Kod
http://serwer.pl/plik.php&zmienna1=wartosc1&zmienna2=wartosc2

wiec nie do konca poprawna.
Wszystkim dziekuje za zainteresowanie sie tematem!
FiDO
Można też tak:

  1. <?php
  2.  
  3. $url = preg_replace('#(&)?SID=[a-z0-9]+(?(1)|&)#i', '', $url);
  4.  
  5. ?>


Załatwia to chyba każde możliwe umiejscowienie parametru w linku i nie wymaga dalszej obróbki.
piotrekkr
Cytat(Gość_phpion.com @ 2006-05-12 08:48:55)
piotrekkr: w twoim przypadku ten link bedzie mial postac:
Kod
http://serwer.pl/plik.php&zmienna1=wartosc1&zmienna2=wartosc2

wiec nie do konca poprawna.

hmm nie mialem czasu na testy ale dobrze ze rozwiazales problem pozdrawiam
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.