Kasowanie parametru z URL

Kasowanie parametru z URL
BA
  • Rejestracja:ponad 6 lat
  • Ostatnio:6 miesięcy
  • Postów:172
0

Witam,
Mam kod

Kopiuj
$var = $_GET['myurl'];

Moje przykładowe URL:

Kopiuj

https://mydomain/sample/value-2019?fbclid=xxxxxxxxxxxx

lub

https://mydomain/sample/value-2019?date=2018&fbclid=xxxxxxxxxxxx


lub 

https://mydomain/sample/value-2019?fbclid=xxxxxxxxxxxx&id=10
lub

https://mydomain/sample/value-2019?x=xyz


etc...


$_GET['myurl'] - to jest mój aktualny URL.

W jaki sposób sprawdzić czy parametr fbclid istnieje w $var i jeśli tak, to go usunąć?

Na przykład z

Kopiuj
$var = 'https://mydomain/sample/value-2019?date=2018&fbclid=xxxxxxxxxxxx'

Chciałbym otrzymać:

Kopiuj
$var = 'https://mydomain/sample/value-2019?date=2018'

WAŻNE: Parametr fbclid nie zawsze istnieje i nie zawsze jest w tym samym miejscu.

Wie ktoś może jak to zrobić? Bardzo proszę o pomoc.

cerrato
Moderator Kariera
  • Rejestracja:około 7 lat
  • Ostatnio:dzień
  • Lokalizacja:Poznań
  • Postów:8802
0

Nie zrobię tego za Ciebie, ale mogę pomóc :P

Czy znasz takie coś jak strpos - http://php.net/manual/pl/function.strpos.php ?


edytowany 1x, ostatnio: cerrato
DE
  • Rejestracja:ponad 9 lat
  • Ostatnio:11 miesięcy
  • Postów:1788
1

Pamiętaj, że musisz zrobić przekierowanie. Jeżeli usuniesz sam parametr z $_GET, to nic się nie zmieni.

cerrato
Moderator Kariera
  • Rejestracja:około 7 lat
  • Ostatnio:dzień
  • Lokalizacja:Poznań
  • Postów:8802
1

@Desu: zależy w sumie od tego, co OP chce z tym ciągiem zrobić.
Ja to rozumiem tak, że pobiera sobie cały URL do zmiennej, a potem się nad nią znęca ;)
Równie dobrze można by było dostać się do poszczególnych zmiennych korzystając z tablicy superglobalnej $_GET - ale z tego co zrozumiałem, to nie interesuje go rozbijanie $_GET na poszczególne elementy, tylko stwierdzenie, czy dany parametr/ciąg występuje.

Aczkolwiek, jeśli chodzi o stworzenie URL'a wyjściowego, to ja bym przeleciał przez $_GET pętlą foreach i jeśli w danej iteracji natrafiłbym na fbclid to bym po prostu tej wartości nie przekazywał dalej, ale przeszedł do następnej iteracji.


edytowany 1x, ostatnio: cerrato
PD
  • Rejestracja:ponad 10 lat
  • Ostatnio:29 dni
  • Postów:178
1
Kopiuj
// function removeQueryKey(@string, @array)
function removeQueryKey($url, $keys = []) {
	if(($query = parse_url($url, PHP_URL_QUERY)) && !empty($query)) {
		list($urlN) = explode("?",$url,2);
		$newQuery = [];
		parse_str($query, $queryArray);
		foreach($queryArray as $key => $val) {
			if(!in_array($key, $keys)) {
				$newQuery[$key] = $val;
			}
		}
		return $urlN."?".http_build_query($newQuery);
	} else {
		return $url;
	}
}

Przykład:

Kopiuj
print_r(removeQueryKey("https://example.com/sample/value-2019?date=2018&fbclid=xxxxxxxxxxxx", ["fbclid"])); 

Nie pomagam naPW.!.
edytowany 1x, ostatnio: PiDev
Freja Draco
Freja Draco
  • Rejestracja:około 7 lat
  • Ostatnio:ponad 3 lata
  • Postów:3394
1
baracadus napisał(a):

https://mydomain/sample/value-2019?fbclid=xxxxxxxxxxxx
https://mydomain/sample/value-2019?date=2018&fbclid=xxxxxxxxxxxx
https://mydomain/sample/value-2019?fbclid=xxxxxxxxxxxx&id=10
https://mydomain/sample/value-2019?x=xyz

W jaki sposób sprawdzić czy parametr fbclid istnieje w $var i jeśli tak, to go usunąć?
WAŻNE: Parametr fbclid nie zawsze istnieje i nie zawsze jest w tym samym miejscu.

Wie ktoś może jak to zrobić? Bardzo proszę o pomoc.

Kopiuj
$url = preg_replace('/[&?]fbclid=[^&]*/i', "", $url);

ewentualnie:

Kopiuj
$url = preg_replace('/[&?]fbclid=[^&]*/i', "", $url, -1, $count);

Jeśli chcesz policzyć czy i ile łańcuchów wykryto i podmieniono.


YO
  • Rejestracja:ponad 11 lat
  • Ostatnio:prawie 3 lata
  • Postów:540
2

Testowałem metody z tego wątku ... i nie działają przynajmniej u mnie.

Ja Ci proponuję takie coś, dzisiaj sobie opracowałem gdy inne metody zawiodły:

Kopiuj
$url=$_SERVER['REQUEST_URI'];

							$parts = parse_url($url);
							//echo $parts['query'];						
							
							if ($parts['query'] == "id=jakiesid&p=jakieparametrydziwne&x=xxxxxxxxx")
							
							{
								echo "usun mnie";
							}
							else 
							{
								echo ":(";
							}

Dziura w ścianie gdzie Panowie widzą Panie,
Rick and Morty, season 1.
Szukam tej dziury, jak coś dajcie znać gdzie jest :D "A z Ciebie c**** pisowski" - Ula Papuszko (w sensie, że JA) 05.06.2020 r., grupa: Strajk Przedsiębiorców. Witam zatem, jestem c**** pisowski ;)
Zobacz pozostałe 4 komentarze
PD
Dziwne bo u mnie na localhost działa ;>
YO
co nie zmienia faktu, że przez parse_url jest prościej XD i trudno nie rozumieć tego w zasadzie 2 linijkowego kodu - pobranie aktualnego adresu i rozbicie adresu na co się c hce.
PD
Skopiuj nowy kod lub usuń z parametrów funkcji String i Array
YO
teraz działa :)
PD

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.