Kasowanie parametru z URL

Odpowiedz Nowy wątek
2019-01-22 08:51

Rejestracja: 1 rok temu

Ostatnio: 6 godzin temu

0

Witam,
Mam kod

$var = $_GET['myurl'];

Moje przykładowe URL:


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

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

Chciałbym otrzymać:

$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.

Pozostało 580 znaków

2019-01-22 09:21
Moderator Kariera

Rejestracja: 2 lata temu

Ostatnio: 4 dni temu

Lokalizacja: Poznań

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 ?


Naczelny forumowy hejter Apple

That game of life is hard to play, I'm gonna lose it anyway
The losing card I'll someday lay, So this is all I have to say
edytowany 1x, ostatnio: cerrato, 2019-01-22 09:21

Pozostało 580 znaków

2019-01-22 11:41

Rejestracja: 4 lata temu

Ostatnio: 17 godzin temu

1

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

Pozostało 580 znaków

2019-01-22 11:44
Moderator Kariera

Rejestracja: 2 lata temu

Ostatnio: 4 dni temu

Lokalizacja: Poznań

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.


Naczelny forumowy hejter Apple

That game of life is hard to play, I'm gonna lose it anyway
The losing card I'll someday lay, So this is all I have to say
edytowany 1x, ostatnio: cerrato, 2019-01-22 11:46

Pozostało 580 znaków

2019-01-22 20:10

Rejestracja: 5 lat temu

Ostatnio: 5 dni temu

1
// 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:

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

Nie pomagam naPW.!.
edytowany 1x, ostatnio: PiDev, 2019-01-23 17:53

Pozostało 580 znaków

2019-01-22 21:36

Rejestracja: 1 rok temu

Ostatnio: 1 dzień temu

1
baracadus napisał(a):

https://mydomain/sample/value-2019?fbclid=xxxxxxxxxxxx
https://mydomain/sample/value[...]=2018&fbclid=xxxxxxxxxxxx
https://mydomain/sample/value[...]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.

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

ewentualnie:

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

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


Pozostało 580 znaków

2019-01-23 09:45

Rejestracja: 6 lat temu

Ostatnio: 1 tydzień temu

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:

$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
Pokaż pozostałe 4 komentarze
Dziwne bo u mnie na localhost działa ;> - PiDev 2019-01-23 17:51
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. - youmound 2019-01-23 17:52
Skopiuj nowy kod lub usuń z parametrów funkcji String i Array - PiDev 2019-01-23 17:54
teraz działa :) - youmound 2019-01-23 17:59
A jednak :D - PiDev 2019-01-23 18:00

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0