Autor Zpráva
uzivatel
Profil *
Potřeboval bych dostat parametr z URL. Jenom jeden. Např když je adresa http://www.google.com/search?aq=t&oq=null&hl=cs&q=parametr+z+url&lr=la ng_cs jak dostanu parametr [b]q[/q]?
Googllil jsem a našel jsem pouze :


<?php
// zkonstruování URL výčtem parametrů
echo "search.php?search=" . urlencode($_GET["search"]) . "&amp;page=" . ($_GET["page"] + 1);

/** Vyjmutí parametru z URL
* @param string $url URL
* @param string $param regulární výraz parametru k vyjmutí
* @return string URL s vyjmutým parametrem
*/
function remove_from_url($url, $param) {
return preg_replace(array("~\?($param)=[^&]*&~", "~[&?]($param)=[^&]*~"), array('?', ''), $url);
}
echo htmlspecialchars(remove_from_url($_SERVER["REQUEST_URI"], "page"));
?>
ale to dělá pravý opak toho co chci. Smaže to uvedený parametr. Já ho chci zachovat.
tiso
Profil
použiješ funkciu preg _match a "~[&?]($param)=[^&]*~"
uzivatel
Profil *
function from_url($url, $param) {

return preg_match(array("~[&?]($param)=[^&]*~", "~[&?]($param)=[^&]*~"), array('?', ''), $url);
}

echo $pokusna_url = "http://www.google.com/search?aq=t&oq=null&hl=cs&q=site%3Amozektevidi. net&lr=";
echo from_url($pokusna_url, "q");

nejde
Warning: preg_match() expects parameter 1 to be string, array given in C:Program Filesxampphtdocspage.php on line 17
Alphard
Profil
tak si to přelož, ne?
array("~[&?]($param)=[^&]*~", "~[&?]($param)=[^&]*~"), array('?', '')
co tam dělá pole? patří tam řetězec
uzivatel
Profil *
function from_url($url, $param) {
return preg_match("~[&?]($param)=[^&]*~", "?", $url);
}
echo $pokusna_url = "http://www.google.com/search?aq=t&oq=null&hl=cs&q=site%3Amozektevidi. net&lr=";
echo from_url($pokusna_url, "q");

Mějte se mnou trpělivost. from_url mi vrátí nulu :-/
uzivatel
Profil *
Už jsem to zkoušel řešit, osekalo nepotřebné parametry přes replace "" jenomže parametry jsou pokaždé jiné. Mě by zajímalo jenom q=$cokoliv Nějaké řešení?
MzM
Profil
tak ho stvoř, ne?
vem url bez parametrů a připlácni tam q s obsahem.
uzivatel
Profil *
MzM: Jak to myslíš? Já url mám: Url zní $url = "http://www.google.com/search?aq=t&oq=null&hl=cs&q=site%3Amozektevidi. net&lr="; a já potřebuji z té url dostat hledané slovo (referer) to je část q=neco
tiso
Profil
uzivatel - mrkni do dokumenácie na php.net aké má preg_match parametre, potom niečo skúšaj...
uzivatel
Profil *
To bylo to první co jsem udělal, přesto mi to nejde. A nerozumím všemu, je to v eng
tiso
Profil
uzivatel - tak s tým Ti nepomôžem...
uzivatel
Profil *
Už jsem to vyřešil oklikou. Pro zajímavost a pro ostatní co je to zajímá:

$url = "http://www.google.com/search?aq=t&oq=null&hl=cs&q=site%3Amozektevidi. net&lr=";
//url ze ktere to dostanu
$url_2 = ereg_replace("^http.*q=", "", urldecode(htmlspecialchars($url)));
//smažu začátek až do parametru q, který chci zachovat
$url_3 = str_replace("&amp;", " blabla", $url_2);
//ostatní parametry nechci, tak je nahradim textem blabla
$url_4 = ereg_replace("blabla.*", "", htmlspecialchars($url_3));
Smažu vše od blabla (hned druhý parametr, nepotřebuji) až do konce

výsledek = zůstane mi parametr Q , který jsem chctěl od začátku zachovat.


Miluji PHP
tiso
Profil
"http://www.google.com/search?aq=t&oq=null&hl=cs&q=site%3Amozektevidi. net&lr="

uzivatel=MzK ?
uzivatel
Profil *
jak to myslíš?
bukaj
Profil
a co takhle normálně použít prosté $_GET["q"]?
edit: promiňte, pořádně jsem si nepřečetl, takhle to není

použít funkci parse_url a následně rozebrat query:


function rozborUrl($url, $get){
$casti=parse_url($url);
foreach(explode("&", $casti["query"]) as $jedenGet){
$vysledek=explode("=", $jedenGet);
if($vysledek[0]==$get){
return $vysledek[1];
}
}
return false;
}
uzivatel
Profil *
bukaj: Mnohé díky. Vaše řešení je mnohem lepší, než moje. V mojem uvedeném řešení jsem se pokoušel přes regulární výrazy smazt vše před q= a po následujícím &. Ale bylo to velmi nepřehledné. Díky
bukaj
Profil
není zač
Toto téma je uzamčeno. Odpověď nelze zaslat.

0