Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [regexp] Wyszukiwanie, ale nie w linkach
Forum PHP.pl > Forum > PHP
Blackhole
Hej!
Mam w tekście działające linki, tzn. nie same teksty linków, ale łącza. Chcę podświetlać znalezione przez wyszukiwarkę słowa/frazy, lecz z pominięciem fragmentów, które są adresem, do którego linki prowadzą.
Nie mam bladego pojęcia, jak to zrobić. Czy jest w wyr. regularnych coś, co pozwala wskazać, że danego tekstu nie ma w wybranym miejcu być? (to chyba byłoby mi pomocne)

Próbuję jakoś, ale jeszcze nie działa. Mam:
  1. $slowo = "findME";
  2. $fnd = "#(?<!(href=\"))(.*)(".$slowo.")(.*)(?!\")#Ui"; // pattern do znajdywania
  3. $rpl = "$1$2<span class=\"hl_found\">$3</span>$4$5"; // zamiana na to
Jak widać, korzystam z lookbehind'ów ( http://www.regular-expressions.info/lookaround.html ), bo wydaje mi się, że to ma szanse tu zadziałać. Widać jednak, że coś mam ciągle nie tak. Pomóźcie, proszę...
ayeo
Witam!

Co takiego spróbuj. I nazywaj zmienne normalnie to nie będziesz musiał takich durnych komentarzy robić winksmiley.jpg

  1. $wordToReplace = "findME";
  2. $pattern = '#(<a href=".*?">.+?)('.$wordToReplace.')(.+?</a>)#';
  3. $replacement = '$1 <span class="tralalala">$2</span> $3';
  4. $subject = 'Jakiś tekst, nie wiem co pisać <a href="">Tutaj będzie '.$wordToReplace.' i tu jeszcze coś</a> Borsuki lubią latać po lesie';
  5. var_dump( preg_replace( $pattern, $replacement, $subject ) );


Pozdrawiam!
Blackhole
ayeo, działa, ale tylko dla linków. Co trzeba by poprawić, by nie omijało również słów, które są poza linkami?

Poradziłem sobie tak, że najpierw wszystkie wyszukuję, a potem usuwam te z href="".
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.