Autor Zpráva
Joeicz
Profil *
Dobrý den,
Prosím vás o pomoc s regulérním výrazem.
Dělám si statistiky pro web a už mi chybí jen pozice v googlu.
Potřebuji pomocí preg_match vatáhnout tu jedničku, ale ten kód 0CBgQFjAA se mění, vyhledat potřebuji podle url www..........cz.
<a href="http://www..........cz/" class="l" onmousedown="return clk(this.href,'','','','1','','0CBgQFjAA')">


Všem moc děkuji.
Str4wberry
Profil
A co jste už vymyslel?
Joeicz
Profil *
Str4wberry:
A co jste už vymyslel?

Kdybych to uměl vymyslet, tak neprosím o radu.
__construct
Profil
Joeicz:
Kdybych to uměl vymyslet, tak neprosím o radu.
Potom napíšte radšej sem
Joker
Profil
Joeicz:
Já bych to asi vyřešil úplně triviálně:
onmousedown="return clk\(this\.href,'','','','1','','([a-zA-Z0-9]+)'\)"
Kajman_
Profil *
Jen asi má být v závorce ta jednička, co se asi může měnit.
onmousedown="return clk\(this\.href,'','','','([0-9]+)','','[a-zA-Z0-9]+'\)"
Joker
Profil
Kajman:
Jo ajo, on chce vytáhnout tu jedničku. Tak potom takhle.
Joeicz
Profil *
Kajman:
onmousedown="return clk\(this\.href,'','','','([0-9]+)','','[a-zA-Z0-9]+'\)"


Takhle to funguje, to jsem zkoušel díky, ale já potřebuji aby to našlo podle té URL a pokud to napíši takhle:
#<a href=\"http://www.............cz/\" class=\"l\" onmousedown=\"return clk\(this\.href,\'\',\'\',\'\',\'([0-9]+)\',\'\',\'[a-zA-Z0-9]+\'\)#si


Tak to nefunguje, asi to budou ty mezery, ale já nevím jak je zapsat.

Jinak všem děkuji za pomoc.
AM_
Profil
Problém bude v neoescapovaných tečkách v url.

a proč nematchovat jenom <a href=\"http://www.............cz/\" class=\"l\" ? proč do výrazu tahat ještě funkci v onmousedown()?
A vůbec, nebylo by lepší vzít na to nějaký HTML DOM parser? ono tahat hodnoty z HTML kódu regulárními výrazy je pořád tak trochu drbání se levou rukou za pravým uchem...
Joeicz
Profil *
AM:
Problém bude v neoescapovaných tečkách v url.
Místo těch teček je samozřejmě url adresa.

a proč nematchovat jenom <a href=\"http://www.............cz/\" class=\"l\" ? proč do výrazu tahat ještě funkci v onmousedown()?
Já potřebuji právě to číslo v té funkci. To číslo značí pozici, kterou potřebuji vytáhnout.

Jinak samozřejmě děkuji.
AM_
Profil
Joeicz:
Místo těch teček je samozřejmě url adresa.
a v té adrese se žádná tečka nevyskytuje?

Já potřebuji právě to číslo v té funkci. To číslo značí pozici, kterou potřebuji vytáhnout.
pak je asi nejjednodušší toto řešení.

Zkus si ten regulár maximálně zjednodušit, nejdřív si matchnout třeba jen kousek toho odkazu, a postupně zjistit, proč ti to PŘESNĚ nefunguje. Až budeš vědět "když matchuju mezeru tak mi to nejde" nebo tak něco, tak sem s tím přijď, ale chybu v dlouhém reguláru se slovy "hledejte šmudlové" tu neberem...
Joeicz
Profil *
AM:
a v té adrese se žádná tečka nevyskytuje?
v url je vždycky tečka

hledejte šmudlové
nic takového jsem nepsal. Vždy jste mi tu pomohly a taky si toho vážím a určitě si to nemyslím.

hybu v dlouhém reguláru
Tohle už mám vyřešené:
onmousedown="return clk\(this\.href,'','','','([0-9]+)','','[a-zA-Z0-9]+'\)

tohle chybí:
www.............cz/\" class=\"l\" 

ten je fakt dlouhý, nevěděl jsem, že je to takový problém.
AM_
Profil
Joeicz:
„hledejte šmudlové“
nic takového jsem nepsal. Vždy jste mi tu pomohly a taky si toho vážím a určitě si to nemyslím.
já vím, že nepsal, a rádi ti pomůžem, ale součástí tvé vlastní snahy je problém maximálně zjednodušit :)

ten je fakt dlouhý, nevěděl jsem, že je to takový problém.
vzhledem k tomu, že v regulárech jde opravdu o každý znak, tak najít přesné umístění chyby je otrocká práce, kterou můžeš udělat i ty.

tohle chybí:
www.............cz/\" class=\"l\"
jak jsem říkal, máš oescapované konkrétní adresy?

např.
www\.google\.cz/\" class=\"l\"

//mimochodem nahlédl jsem do zdrojáku výsledkové stránky google a to class=l je tam bez uvozovek.
Joeicz
Profil *
Díky pomohlo to a chybu jsem dělal já.
Text jsem označil a dal zobrazit zdroják, bylo tam class="l" a ctrl+u je class=l.
Omlouvám se a ještě jednou děkuji AM_ za proškolení, budu si to pamatovat.
Opravdu moc díky.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0