Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyszukiwanie słów nie objętych znacznikami
Forum PHP.pl > Forum > PHP
japcok
witam,
potrzebuję pomocy z wyszukiwaniem po wyrażeniach regularnych.
Sprawa wygląda następująco:

Przeszukuję artykuły pod kątem określonego słowa kluczowego, np. "internet". Jeśli słowo zostanie odnalezione, jest ono obejmowane znacznikami [link] z określonym ID, w efekcie końcowym otrzymuję:
"jakiś tekst artykułu [link=12345]internet[/link] inny tekst".

Wszystko ok, ale do czasu.. gdy ponownie zechcę znaleźć to samo słowo kluczowe. Jeśli słowo "internet" jest już objęte znacznikiem [link], to nie może ono zostać wyszukane drugi raz i ponownie objęte znacznikiem. Powinno zostać zamienione kolejne pasujące w artykule słowo, jeśli istnieje jeszcze jakieś "wolne" pasujące.

Zatem jak wyłączyć z wyników wyszukiwania słowa już objęte znacznikami [link=ID][/link]?
Lub inaczej: jak sprawdzić czy w tekście jest wolne słowo kluczowe (nie objęte [link]) i objąć je nowym znacznikiem?


Próbowałem coś kombinować z wyrażeniem regularnym:
#\[link=.*?\](.*?)\[/link\]#si
za jego pomocą przy wyświetlaniu artykułu zamieniam przez preg_replace_callback() słowa objęte [link] na odnośniki.
Może da się jakoś to łatwo przekształcić, by wyszukiwało wszystkie pasujące oprócz już objętych znacznikami?

pozdrawiam
H4eX
Można zrobić podobnie jak w tagu na pogrubienie:
  1. $s = preg_replace("/\[b\]((\s|.)+?)\[\/b\]/", "<b>\\1</b>", $s);
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.