Sam w sobie kod jest prosty:
Kod
<?
$text = 'jakiś tam tekst, zawierający linki <a href="http://tekst.pl">tekst</a> ';
$search = array ('tekst', 'teksty');
$replace = array ('<a href="http://adres.url.pl">tekst</a>','<a href="http://adresy.url.pl">teksty</a>');
$display = preg_replace($search, $replace, $text);
return $display;
?>
$text = 'jakiś tam tekst, zawierający linki <a href="http://tekst.pl">tekst</a> ';
$search = array ('tekst', 'teksty');
$replace = array ('<a href="http://adres.url.pl">tekst</a>','<a href="http://adresy.url.pl">teksty</a>');
$display = preg_replace($search, $replace, $text);
return $display;
?>
W związku z tym , że tych definicji większa ilość zrezygnowałem z użycia bazy danych - zastosowałem tablice.
Problem polega na tym, że ten skrypt podmienia również frazy w anchorach oraz w url-ach.
Szukałem długo w necie i właściwie nie znalazłem rozwiązania. Koncepcja sprawdzania czy dana fraza znajduje się w obrębie linku dla każdej znalezionej frazy w tekście dla kolejnych fraz z ciągu jest błędna - skrypt będzie bardzo ciężki.
Przemyslałem sobie sprawę i myślę, że najprostszym rozwiązaniem i najmniej obciążającym parser będzie takie przekształcenie ciągów zawartych pomiędzy <a i /a>, żeby ich fragmenty poprostu nie znalazły się w obrębie ciągu $search. Wymysliłem, że wystarczy w obrębie <a i /a> wstawić co drugi znak £, nastepnie wykonać w/w kod podmiany, a nastepnie z pomiędzy tagów <a /a> usunąć wszystkie znaki £.
Tylko jak to zrobić ? Bardzo prosze o pomoc w skodowaniu tego fragmentu modyfikacji ciągu pomiędzy <a i /a>.