![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 12.09.2007 Ostrzeżenie: (0%) ![]() ![]() |
Piszę sobie taki skrypcik - służący do podmiany fraz w tekście na linki do encyklopedii, która poajwi się na stronie - coś takiego jak na hotscropts.com w opisach skryptów.
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; ?> 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>. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 19:48 |