Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> preg_replace (arrays), Kłopot z modyfikatorem "i"
Blackhole
post 13.06.2010, 13:27:41
Post #1





Grupa: Zarejestrowani
Postów: 283
Pomógł: 1
Dołączył: 15.11.2004
Skąd: Mikołów

Ostrzeżenie: (0%)
-----


Hej!
Chcę podświetlać znalezione przez wyszukiwarkę komentrzy frazy, będące szukanymi ciągami. Wyszukiwarka oparta jest na indeksie FULLTEXT i wykorzystuje 'BOOLEAN MODE'. Znajduje więc ciągi nie zważając na wielkość liter.
Mam kod:
  1. $srch = explode(" ",$_POST['searchString']); // rozbij zapytanie na fragmenty
  2. for ($ssi=0; $ssi<count($srch); $ssi++) // usuń operatory
  3. $srch[$ssi] = trim($srch[$ssi], "-+()\"<>");
  4. $rpl = $srch;
  5. for ($ssi=0; $ssi<count($srch); $ssi++) {
  6. $srch[$ssi] = "#".$srch[$ssi]."#i"; // 'pattern' elementu do podświetlenia
  7. // $rpl[$ssi] = '<span class="hl_found">'.$rpl[$ssi]."</span>"; // *1*
  8. $rpl[$ssi] = "<span class=\"hl_found\">$1</span>"; // *2* (kod HTML dający efekt podświetlenia)
  9. }
  10. echo preg_replace($srch, $rpl, $tresc); // wyświetlenie z podświetlonymi znalezionymi wyrazami
Mój problem polega na tym, że obecny kod nie podświetla znalezionych wyrazów, lecz je usuwa. Gdy jednak dam do uruchomienia linię oznaczoną *1* zamiast *2*, to podświetlanie działa, ale poza podświetleniem dostaje też zmieniona wielkość liter w podświetleniu na taką, jaka została używa w zapytanie (w $_POST['searchString'). Np.:
- jeśli wyszukuję ciąg Mama i zostanie znaleziony komentarz ($tresc) zawierająca ciąg mama, to podświetlenie zostanie dodane i mama zmieni się na Mama. Tej zmiany wielkości liter nie chcę.
Co proponujecie?


--------------------
Ściskam prawicę...
Jacek

http://doscniewoli.pl/ - wszyscy jesteśmy niewolnikami bankierów!
http://jezusimarlena.ovh.org/
YouTube - Egzorcyzmy Anneliese Michel
Go to the top of the page
+Quote Post
Fifi209
post 13.06.2010, 14:04:00
Post #2





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


użyj preg_replace_callback


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
Blackhole
post 13.06.2010, 15:40:27
Post #3





Grupa: Zarejestrowani
Postów: 283
Pomógł: 1
Dołączył: 15.11.2004
Skąd: Mikołów

Ostrzeżenie: (0%)
-----


Hehe biggrin.gif Wystarczyło zmienić w linii *2* $1 na $0 sciana.gif


--------------------
Ściskam prawicę...
Jacek

http://doscniewoli.pl/ - wszyscy jesteśmy niewolnikami bankierów!
http://jezusimarlena.ovh.org/
YouTube - Egzorcyzmy Anneliese Michel
Go to the top of the page
+Quote Post

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: 18.07.2025 - 09:13