Portál AbcLinuxu, 10. května 2025 11:14

Dotaz: Jak v PHP smazat z url vse za otaznikem

11.1.2018 00:40 O|O
Jak v PHP smazat z url vse za otaznikem
Přečteno: 1010×
Odpovědět | Admin
Dobry vecer, poradte mi prosim jak smazat z promene otaztnik a vse co je za nim

$var = '/prvni/druha?name=treti&id=2';

v PHP neumim a nedari se mi najit vhodny priklad. Moc dekuji.

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

11.1.2018 00:48 Kit | skóre: 45 | Brno
Rozbalit Rozbalit vše Re: Jak v PHP smazat z url vse za otaznikem
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jde to více metodami, mně se osvědčila kompletní rozborka pomocí funkce parse_url().
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
11.1.2018 01:07 O|O
Rozbalit Rozbalit vše Re: Jak v PHP smazat z url vse za otaznikem
Ahoj, tak jsem zkusil

echo parse_url($_GET['url']) ;

ale vraci mi to z takove url

/prvni/druha?name=treti&id=2

toto

/prvni/Array

co mam spatne
11.1.2018 02:38 trilobyte | skóre: 2 | blog: podtrzitko
Rozbalit Rozbalit vše Re: Jak v PHP smazat z url vse za otaznikem
Ta funkce vraci pole a echo to pak jenom nejak podivne vytiskne (se spravne nastavenym severem by melo hodit Notice: Array to string conversion in test.php).
Zkus print_r(parse_url($var)); nebo var_dump(parse_url($var)); to ti ukaze co skutecne leze z ty fce.
11.1.2018 08:06 cronin | skóre: 49
Rozbalit Rozbalit vše Re: Jak v PHP smazat z url vse za otaznikem
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jazykom PHP síce nehovorím, ale základný triviálny algoritmus by mal fungovať v akomkoľvek jazyku: splitnúť reťazec na podreťazce s použitím otázniku ako delimitera a z výsledku zobrať prvý element.
11.1.2018 08:16 ehmmm
Rozbalit Rozbalit vše Re: Jak v PHP smazat z url vse za otaznikem
A pro tento pripad jeste efektivneji: najit prvni otaznik a vzit jenom to, co je pred nim. Takze neco jako substr(url, 0, strpos(url, "?")), tedy za predpokladu, ze tam ten otaznik je. (Ceckari by samozrejme jeli pointerem od zacatku stringu po otaznik, efektivneji to uz snad ani nejde.) Uznavam ale, ze s tim explode() bude kod strucnejsi.
15.1.2018 13:22 julus
Rozbalit Rozbalit vše Re: Jak v PHP smazat z url vse za otaznikem
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nejjednodussi reseni mi prijde asi $_SERVER['PHP_SELF']
15.1.2018 17:42 jiwopene | skóre: 31 | blog: Od každého trochu…
Rozbalit Rozbalit vše Re: Jak v PHP smazat z url vse za otaznikem
Odpovědět | | Sbalit | Link | Blokovat | Admin
Zvolte jednu:

Práce s řetězcem -- odmazat vše od 1. otazníku
<?php
function qa_delete($url) {
$pos = strpos($url, '?');
if ($pos !== false)
return substr($url, 0, $pos);
return $url;
}
Použití:
<?php
var_dump(qa_delete('/prvni/druha?name=treti&id=2'));
Práce s řetězcem -- odmazat vše od posledního otazníku (změna strpos na strrpos v kódu)
<?php
function qa_delete($url) {
$pos = strrpos($url, '?');
if ($pos !== false)
return substr($url, 0, $pos);
return $url;
}
Regulární výraz -- odmazat od 1. otazníku
<?php
function qa_delete($url) {
preg_match('@([^?]*)@', $url, $m);
return $m[1];
}
Ukázka použití (jedna z předchozích možností musí být spuštěna předem):
<?php
var_dump(qa_delete('/prvni/druha?name=treti&id=2'));
Výstup:
string(12) "/prvni/druha"
.sig virus 3.2_cz: Prosím, okopírujte tento text do vaší patičky.
Řešení 1× (Ján Dráb)
19.1.2018 22:27 Ján Dráb | skóre: 4 | Banská Bystrica
Rozbalit Rozbalit vše Re: Jak v PHP smazat z url vse za otaznikem
Odpovědět | | Sbalit | Link | Blokovat | Admin

naozaj netreba vymyslat hluposti a precitat si pripadne dokumentaciu k parse_url http://php.net/manual/en/function.parse-url.php

$full_url =  'http://www.abclinuxu.cz/EditDiscussion/431817?action=add&dizId=228744&threadId=0';
$part = '/prvni/druha/?name=treti&id=2';

$full_url_clear = parse_url($full_url,PHP_URL_PATH);
var_dump($full_url_clear); // string(22) "/EditDiscussion/431817"

$part_clear = parse_url($part,PHP_URL_PATH);
var_dump($part_clear); // string(13) "/prvni/druha/"
Everything has room for improvement.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.