Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zaznaczanie odnalezionych słów, Prośba o pomoc w korekcie funkcji źle oznaczającej znalezione słowa
-Trejder-
post 12.09.2007, 19:28:17
Post #1





Goście







Witam serdecznie!

Potrzebuję prostej procedury, która w zadanym łańcuchu tekstu wszystkie wystąpienia danego słowa oznaczy w jakiś sposób (na przykład zmieni im tło na żółte). W tym celu napisałem taką banalną procedurę:

  1. <?php
  2. function highlight($tresc, $what)
  3. {
  4.  $tresc = str_ireplace($what, '<span style="background-color: #ffff80">'.$what.'</span>', $tresc);
  5.  
  6.  return $tresc;
  7. }
  8. ?>


Zastosowałem str_ireplace(), aby wyszukiwał wszystkie wystąpienia zadanego wyrazu, niezależnie od tego, co użytkownik zapoda jako $what.

To rozwiązanie działa, ale nie do końca tak, jakbym tego chciał. Mi zależy na tym, żeby funkcja służąca do podkreślania wskazanych wyrazów odszukała je wszystkie (niezależnie od wielkości liter - tak, jak robi to teraz) ale żeby przy oznaczaniu nie zmieniała wielkości liter w odnalezionych wyrazach.

Na przykładzie - żeby było jaśniej:

Jeśli użytkownik poda "TEST", to powyższa funkcja znajdzie mi zarówno "test", "Test", "TEST" i każdą inną kombinację. Ale przy oznaczaniu jej (w powyższy sposób) wstawi to, co użytkownik podał - czyli w tym przypadku "Test". Jeśli odnaleziony wyraz będzie w środku zdania, to efekt będzie dość żałosny, np.: "Przeprowadziliśmy gruntowny TEST programu".

Mi zaś chodzi o to, aby funkcja ta odnalazła wszystkie możliwe kombinacje liter, ale już przy podkreślaniu odnalezionych wyrazów pozostawiła taką wielkość liter, jaką odnalazła.

Czyli w zdaniu "Przeprowadziliśmy gruntowny test programu" wyraz "test" ma mieć tło żółte i niezmienioną wielkość liter niezależnie od tego, czy użytkownik wpisze "test", "Test", "TEST", czy może "TeSt".

Coś mi się wydaje, że do tego trzeba napisać trochę bardziej rozbudowaną funkcję szukająco-zamieniającą i nie da się tego zrobić w jednej linijce, jak ja próbowałem powyżej.

Z góry dziękuję za wszelką pomoc w tej sprawie,
Trejder
Go to the top of the page
+Quote Post

Posty w temacie
- Trejder   Zaznaczanie odnalezionych słów   12.09.2007, 19:28:17
- - scrat   może spróbuj tego [PHP] pobierz, plaintext <?p...   12.09.2007, 19:57:20
- - Trejder   Cytat(scrat @ 12.09.2007, 19:57:20 ) ...   13.09.2007, 08:43:52


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 10:59