Autor | Zpráva | ||
---|---|---|---|
RomanT Profil * |
#1 · Zasláno: 23. 7. 2009, 14:48:15
Dobry den,
chtel bych Vas poprosit o pomoc ohledne vytvoreni regularniho vyrazu. Potrebuji v textu (v kodu) oznacit vyhl. slovo hledam slovo : "new" toto slovo na strance zaobalit do <span> mam vytvoreny regular ktery pomoci js funkce replace aplikuji na stranku a oznazuje mi takto hledane slova. Problem je pokud ma nejaky prvek napr: <span class="blue new"> . timpadem se mi naprosto rozhodi kod. <span class="blue <span class="searchedWord">new</span>">asa</span> Potrebuji regular ktery nesahne po techto prvcich?? Dekuji mnohokrat za radu s pozdravem a pranim prijemneho dne R. |
||
Joker Profil |
#2 · Zasláno: 23. 7. 2009, 15:04:55
RomanT:
Možná by stačila podmínka, že mezi nejbližším uzavřením značky a hledaným textem se nesmí nacházet žádné otevření značky: >[^<]*(hledaný text) Samozřejmě to 1. předpokládá, že jakémukoliv textu na stránce předchází alespoň jedna značka (což by jakýkoliv validní dokument měl splňovat), 2. se to dá splést znakem < přímo v textu (což by u validního dokumentu taky neměl být problém a 3. to pořád "rosztřelí" entity, čili hledání třeba "nbsp", by stránku s tvrdými mezerami mohlo dost rozhodit... čemuž by se v reguláru dalo předejít zakázáním ampersandu těsně před hledaným textem |
||
Chamurappi Profil |
#3 · Zasláno: 23. 7. 2009, 15:20:41
Reaguji na Jokera:
„2. se to dá splést znakem < přímo v textu (což by u validního dokumentu taky neměl být problém)“ 1) Znak „<“ se nemusí zapisovat entitou, pokud za ním není znak, který by byl dovolený v názvu entity. Zápis „5<2“ je z pohledu HTML zcela v pořádku. 2) Ve <script>ech může být „<“ následované skoro čímkoliv. 3) Ve validním dokumentu mohou být CDATA sekce (přestože v prohlížečích moc nefungují). Bavíme-li se o JavaScriptu, který by měl pracovat s právě nalistovanou stránkou a jejím innerHTML, tak podoba zpracovávaného HTML závisí na DOMu v prohlížeči, nikoliv na tom, jak úhledně ho napsal autor. V takovém případě skript entitu „ “ nikdy neuvidí. Reaguji na RomanTa: Zpracováváš innerHTML na právě nalistované stránce, nebo nějaký jiný HTML kód? Jestli hledáš na aktuální stránce, šlo by vymyslet čistší postup. |
||
Joker Profil |
#4 · Zasláno: 23. 7. 2009, 15:39:04
Chamurappi:
ad 1) Hmm, njn. Přesto to pořád není tak časté, takže by to nemuselo vadit. ad 2) To by nevadilo... uvnitř značky <script> by se nemělo obalovat tak jako tak a za </script> to zase bude fungovat správně. Pravda ale je, že by ten regulár měl zařídit i vynechání značky <script> ...plus by samozřejmě měl vynechat všechno v <head>. To bych ale řešil tak, že bych nahrazoval jen v těle dokumentu. ad 3) V CDATA sekci by se taky nemělo obalovat, ale pro většinu případů to nebude problém, protože obvykle se CDATA vyskytuje leda tak ve <style> nebo <script>, které by se z obalování měly tak jako tak vyloučit. |
||
RomanT Profil * |
#5 · Zasláno: 23. 7. 2009, 15:40:37
Vzhledem k navrzeni systemu a tomu ze hledane slova zadava uzivatel a tim padem nejsou konkretne dana ( coz uzivam u slovniku pojmu kdy jsou pojmy jasne dane ).
Pri tom vyhledavani jsem bohuzel neprisel na lepsi / casove neee moc narocne reseni :( ale pokud byste meli lepsi reseni budu jen rad dekuji R. |
||
Chamurappi Profil |
#6 · Zasláno: 23. 7. 2009, 16:09:20
Reaguji na RomanaT:
A odpověď na moji otázku zní jak? |
||
RomanT Profil * |
#7 · Zasláno: 24. 7. 2009, 08:48:34
Jeeejda pardon,
ano zpracovavam prave nalistovanou stranku. s pozdravem a pranim prijemneho dne R.T. |
||
Chamurappi Profil |
#8 · Zasláno: 24. 7. 2009, 16:05:09
Reaguji na RomanaT:
Můžeš rekurzivní funkcí projít celý DOM a prohledat jen v textové nody. |
||
Časová prodleva: 15 let
|
0