Autor | Zpráva | ||
---|---|---|---|
GeneralDv Profil |
#1 · Zasláno: 1. 3. 2010, 20:46:58 · Upravil/a: GeneralDv
Potřebuji helfnout.. dělám jeden script na zjištění co zadal návštěvník do vyhledavače za výraz (url dostávam přes http_referrer). Kus kde je problém mi má vytáhnout z URL adresy obsah proměnné $_GET, mám např. URL:
www.google.cz/webhp?sourceid=navclient-ff#hl=cs&source=hp&q=testovaci+obsah&btnG=Vyhledat+Googlem&lr=&aq=f&oq=testovaci+obsah&fp=16bff88525bbbf92 z ní potřebuji vybrat pouze q=testovaci+obsah //popřípadě testovaci+obsah Udělal jsem regulár: $promenna="q"; preg_match_all('/http\:\/\/.*&*('.$promenna.'\=.*)&*/',$url,$matches); jenže se mi vrací výsledek v této podobě: q=testovaci+obsah&fp=16bff88525bbbf92 Poradíte mi prosím jak to mám "oříznout" ? |
||
AM_ Profil |
#2 · Zasláno: 1. 3. 2010, 20:51:35
preg_match('~[\\?&]q\\=[^&]*)~i',$url,$matches); Je to jednodušší a bude to fungovat vždy (google.com?q=test s tvým výrazem ošklivě selže - kolem q=test nejsou žádné &). Jestli tam mám nějakou drobnou chybku tak se omlouvám, netestoval jsem to, ale to už si snad kdyžtak zvládneš opravit, každopádně tohle je cesta správným směrem :) |
||
GeneralDv Profil |
#3 · Zasláno: 1. 3. 2010, 22:05:15
Tak to teda nevim.. chyběl ti tam '(', když mam ten regulár:
~([\\?&]q\\=[^&]*)~i a URL: www.google.cz/#q=test Teď mi to pro změnu nevrací nic.. zkoušim to a začínam mít pocit že to snad ani nejde.. |
||
Majkl578 Profil |
#4 · Zasláno: 1. 3. 2010, 22:10:24 · Upravil/a: Majkl578
Zkus toto (upravený výraz od AM_):
preg_match('~[\?]q\=([^&]+)~i', $url, $matches); var_dump($matches[1]); |
||
mattyZEM Profil |
#5 · Zasláno: 1. 3. 2010, 22:17:00
Nebo použij substr :)
|
||
GeneralDv Profil |
#6 · Zasláno: 1. 3. 2010, 22:24:17
Majkl578: to by šlo, oboum díky
|
||
DoubleThink Profil * |
#7 · Zasláno: 1. 3. 2010, 22:28:40
Nebude lepší použít přímo funkci na to dělanou? parse_str().
|
||
GeneralDv Profil |
#8 · Zasláno: 1. 3. 2010, 22:58:16
DoubleThink:
To sem ani nečekal, každopadně to použiju dík za info. |
||
AM_ Profil |
#9 · Zasláno: 1. 3. 2010, 22:58:20
DoubleThink:
"Parses str as if it were the query string passed via a URL and sets variables in the current scope." To mi přijde jako hrozná prasárna, mohlo by to být i hackery zneužitelné, snad to leda šikovně zabalit do funkce, kde "current scope" neovlivní proměnné programu. Faktem je, že část za hash křížkem už není query string, takže na tuhle verzi by to nefungovalo (ano, taky jsem se divil, ale google si URL s kotvou přesměruje na ?q=query) |
||
Majkl578 Profil |
#10 · Zasláno: 1. 3. 2010, 23:03:14
AM:
Ta funkce má druhý parametr, pokud je zadán, vrátí data jako pole referencí. Nicméně si myslím, že ten regulár je lepší volba. Nezajímá ho, zda je q= za otazníkem nebo za mřížkou. |
||
Časová prodleva: 14 let
|
0