Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] filtrowanie tekstu
Forum PHP.pl > Forum > PHP
mateomm
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.
elemek
  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. ?>
ayeo
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!
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.