Autor Zpráva
monarcha
Profil
Zdravím.
Na své stránky bych chtěl udělat zvýraznění slov, přes které se návštěvník na stránku dostal. V principu nic složitého, z HTTP_REFERER si zjistím slova a pomocí preg_replace('/slovo/','<strong>\\1</strong>',$text) je zvírazním v textu. Narazil jsem ale na 2 problémy:
1) jak předělat regulární výraz tak, aby fungoval pro html kód uložený v proměnné $text - zvírazňoval pouze slova, která NEJSOU uyavřená mezi <>
2) modifikace funkce url_decode tak, aby fungovala pro různá kódování

Dík za všechny rady, Lukáš
mila
Profil
1) jak předělat regulární výraz tak, aby fungoval pro html kód uložený v proměnné $text - zvírazňoval pouze slova, která NEJSOU uyavřená mezi <>
Nevidím důvod nezvíraznit slova v nějakém tagu. Spíše bych se bál, že to nahradí kus tagu (například atribut). To bych udělal nějakým tvrzením o předcházejícím, kde bych měl páry <> libovolně zopakované a za tím by se znak < už nesměl vyskytnout.
Aby slovo nesmělo být vůbec uzavřené v nějakém tagu, na to jsou reguálrní výrazy myslím krátké. Přesněji bych na to měl i důkaz, ale oni jsou v počítačích reexpy silnější, než jak jsou chápány matematicky. O tolik ale myslím ne.

btw Kdyby si měl nějaký zajímavý kód, tak by se případným neošetřením dal možná vymyslet nějaký zajímavý útok. Uříznout třeba kus skriptu tak, aby začal dělat něco jiného:)

2) modifikace funkce url_decode tak, aby fungovala pro různá kódování
Stejně musíš mít nějaký seznam vyhledávačů, aby si věděl odkud máš dotaz vzít. Tak si k němu přidej ještě kódování... To pak normálně převeď na to tvoje.
monarcha
Profil
1) jo tam jsem samozřejmě myslel mezi < a >, tedy kus tagu. Tvrzením o předcházejícím to udělat nelze, protože předcházející (následující) výraz musí mít pevnou délku.
2) To že budu muset mít uloženo kódování jednotlivých vyhledávačů je jasné. Jde mi spíš o použití funkce urldecode. nevím proč, ale funkce urldecode mi nevrací to co bych čekal, ale namísto českých znaků většinou 2 nesmyslná písmenka. Měl jsem za to, že je to v kódování a hledal jsem, jak změnit kódování funkci urldecode. Ta má ale kódování nastaveno podle kódování stránky (nebo se pletu?)
djlj
Profil
monarcha
Možná se pletu, ale asi máš na mysli zvýraznění, nikoli zvíraznění.
Budeš si zřejmě muset dokument rozdělit na části mezi tagy a tagy. Pak to nahradit v částech mezi tagy a pak pospojovat zase zpátky dohromady (napsal jsem to srozumitelně?)... Být tebou se na takovou blbost vykašlu :).
tiso
Profil
1. zvýrazňuj text medzi > a <
Luk@s
Profil *
kdysi o tom psal jakub vrana viz. http://php.vrana.cz/zvyrazneni-vysledku-vyhledavani.php
monarcha
Profil
djlj jo ty y/i mi nějak ujely. Msim se přiznat, že jsem nad tim přemejšlel, pak jsem to sice poprvý napsal dobře, ale podruhý už ně...
s tim rozdělovánim by to asi byla docela práce. Napdlo mě nejdřív zvýraznit vše a pak slova mezi < a > znovu "odvýraznit" (ostatně tak to dělá i jakub vrana. Na jeho stránkách je vyřešeno i to kódování)
skoro nejjednodušší se zdá být řešení, které navrhuje tiso, jdu to vyzkoušet...
Toto téma je uzamčeno. Odpověď nelze zaslat.