Zvýraznění textu v závislosti na obsahu proměnné v PHP
Zdravim,
představte si situaci, kdy mám určitý textový reřezec a vněm potřebuju zvýraznit určitá slova (např. slovo). Slova která potřebuju zvýraznit mohou mohou být jak velkými, tak malými písmeny, s diakritikou i bez ní. Slovo, které se bude zvýrazňovat, určí uživatel, tudíž nemohu dopředu vědět, jaký tvar slovo bude mít.
Problém je, že když mám ve výchozím textovém řetězci např. slovo "dědeček", tak potřebuju zvýraznit všechna slova jako jsou dedecek, Dědeček, DĚDEČEK nebo třeba i děDECek. Mohu použív funkci str_ireplace (), která ignoruje velká a malá písmena a vyměnila by slovo dědeček za dědeček, ale toto řešení je pro mě nepoužitelné.. proč to tak je, se pokusím ukázat na příkladu:
Mám výchozí textový řetězec "Dědeček se jmenuje Petr. Vidím, jak k nám jde dědeček.", uživatel zadá ke zvýraznění slovo "dedecek", použiju-li výše zmíněnou fci - str_ireplace('dedecek', 'dedecek, 'výchozí textový řetězec') pak bude výsledek takovýhle: "dedecek se jmenuje petr. Vidím, jak k nám jde dedecek." Tímto způsobem se značně znehodnocuje výchozí text..
Učelem by mělo být jen pouhé zvýraznění určitého textu.
Díky všem za rady, jak na to:)
představte si situaci, kdy mám určitý textový reřezec a vněm potřebuju zvýraznit určitá slova (např. slovo). Slova která potřebuju zvýraznit mohou mohou být jak velkými, tak malými písmeny, s diakritikou i bez ní. Slovo, které se bude zvýrazňovat, určí uživatel, tudíž nemohu dopředu vědět, jaký tvar slovo bude mít.
Problém je, že když mám ve výchozím textovém řetězci např. slovo "dědeček", tak potřebuju zvýraznit všechna slova jako jsou dedecek, Dědeček, DĚDEČEK nebo třeba i děDECek. Mohu použív funkci str_ireplace (), která ignoruje velká a malá písmena a vyměnila by slovo dědeček za dědeček, ale toto řešení je pro mě nepoužitelné.. proč to tak je, se pokusím ukázat na příkladu:
Mám výchozí textový řetězec "Dědeček se jmenuje Petr. Vidím, jak k nám jde dědeček.", uživatel zadá ke zvýraznění slovo "dedecek", použiju-li výše zmíněnou fci - str_ireplace('dedecek', 'dedecek, 'výchozí textový řetězec') pak bude výsledek takovýhle: "dedecek se jmenuje petr. Vidím, jak k nám jde dedecek." Tímto způsobem se značně znehodnocuje výchozí text..
Učelem by mělo být jen pouhé zvýraznění určitého textu.
Díky všem za rady, jak na to:)
Mělo by to jít přes funkci preg_replace, prostuduj si http://www.php.net/manual/en/reference.pcre.pattern.syntax.php. Viděl bych to zhruba přibližně takhle:
[code]
$value = 'dědeček';
$text = 'Dědeček se jmenuje Petr. Vidím, jak k nám jde dědeček.';
$result = preg_replace("/($value)/i", '$1', $text);
// result: Dědeček se jmenuje Petr. Vidím, jak k nám jde dědeček.
[/code]
Nefunguje to ještě pouze v tom smyslu, že to nefunguje pro 'dedecek' (bez diakritiky, aby našel i slova s diakritikou a naopak). Ale to nefunguje ani při str_ireplace. Takhle narychlo nevím, jestli neexistuje na to nějakej podobnej přepínač jako je /i pro case insensitive.
[code]
$value = 'dědeček';
$text = 'Dědeček se jmenuje Petr. Vidím, jak k nám jde dědeček.';
$result = preg_replace("/($value)/i", '$1', $text);
// result: Dědeček se jmenuje Petr. Vidím, jak k nám jde dědeček.
[/code]
Nefunguje to ještě pouze v tom smyslu, že to nefunguje pro 'dedecek' (bez diakritiky, aby našel i slova s diakritikou a naopak). Ale to nefunguje ani při str_ireplace. Takhle narychlo nevím, jestli neexistuje na to nějakej podobnej přepínač jako je /i pro case insensitive.