Autor Zpráva
jarks
Profil
Dobrý den, snažím se zvýraznit výsledky vyhledávání textů v UTF8 takto:

1.
 $text = preg_replace("~$search~i", '<span class="search-result">\\0</span>', $text);


ALE preg_replace není multibyte, má problémy s češtinou. Nenajde slova, která obsahují velká písmena s diakritikou, např. pokud text je "Šimáček" a hledá se "šimáček". Když se hledá přesně, to znamená "Šimáček", chytne se a označí.

2.
$text = mb_eregi_replace($search, '<span class="search-result">'.$search.'</span>',$text, "i");


Chytne se vždy, ale převádí velikost písmen. Jestliže text je "Čermák" a hledá se "čermák", výsledek je označené "čermák". Pokud budu hledat "ČERMÁK", výsledkem bude označené ČERMÁK.

Takže buď správná velikost písmen, ale nespolehlivé označování, nebo spolehlivé označování a zase špatná velikost písmen. Věděl by prosím někdo, co s tím? PHP: 5.2.9 Díky.
karbon
Profil *
Já bych si našel pozici toho slova přes strpos a pomocí strlen bych zvýrazňované slovo vyřízl a pak bych to spojil i se zvýrazňujícími tagy. Pokud bude těch slov ke zvýraznění víc, je nutné v strpos pracovat s nepovinným parametrem offset.

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