Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] filtrowanie tekstu
mateomm
post 22.08.2008, 09:35:39
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 23.07.2007

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


Witam!

Chciałbym zrobić dynamiczne podświetlanie tekstu za pomocą wyrażeń regularnych, tzn.

mam zbudowany słównik:

  1. <?php
  2. $words = array('/(s+)slowo1(s+)/', /(s+)'slowo2(s+)/', /(s+)'slowo3(s+)/');
  3. ?>


oraz tablice z tekstem alternatywnym oraz text w stringu.

Napisałem sobie wyrażenie regularne, które podświetla mi wszystkie słowa:

  1. <?php
  2. $parsedComponent = preg_replace( $words, $replacements, $text);
  3. ?>


Jak mam przerobić powyższe wyrażenie, aby słowa w tekście podświetlały mi się jak obecnie z małym wyjąkiem. Jeśli słowo trafi się w linku to niech zostanie niezmienione, np.

org. ala ma kota <a href="#">kot ma ale</a>

to po zamianie bedzie
ala <b>ma</a> kota <a href="#">kot ma ale</a>

Z góry dzięki wielkie za pomoc.
Próbowałem to zrobić na wszelkie możliwe sposoby, ale ciągle mi sie nie udawało

Pozdrawiam
M.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
elemek
post 22.08.2008, 11:56:19
Post #2





Grupa: Zarejestrowani
Postów: 71
Pomógł: 24
Dołączył: 14.08.2008

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


  1. <?php
  2. '#.+?#is',
  3. $text,
  4. $links,
  5. PREG_SET_ORDER
  6. );
  7.  
  8. $i=0;
  9. $parsedComponent = preg_replace(
  10. '#.+?#ise',
  11. '\"{__link\".$i++.\"}\"',
  12. $text
  13. );
  14.  
  15. $parsedComponent = preg_replace( $words, $replacements, $parsedComponent);
  16.  
  17. $parsedComponent = preg_replace(
  18. '/{__link(d+)}/e',
  19. '$links[$1][0]',
  20. $parsedComponent 
  21. );
  22. ?>


Ten post edytował elemek 22.08.2008, 12:09:39


--------------------
Rzecz trudną rozbijam na kilka łatwiejszych :)
Pomogłem? Kliknij Pomógł.
Go to the top of the page
+Quote Post
ayeo
post 22.08.2008, 12:06:17
Post #3





Grupa: Przyjaciele php.pl
Postów: 1 202
Pomógł: 117
Dołączył: 13.04.2007
Skąd: 127.0.0.1

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


Poza tym łatwiej Ci będzie trzymać w tablicy same słowa, i przerabiać to na patterny przez array_walk(); lub array_map();

Taka mała rada winksmiley.jpg
Pozdrawiam!


--------------------
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: 14.08.2025 - 01:02