![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 12.06.2005 Ostrzeżenie: (0%) ![]() ![]() |
Chce zamienić w dowolnym tekście na linki wszystkie wyrazy które znajdują sie w słowniku (pobierane z bazy), ważne jest aby tworzyło linki tylko z całych wyrazów inaczej problemu by nie było.
Mam w słowniku kilkaset wpisów i przykładowo znajduje sie tam wyraz dom, chce żeby zamieniało w zdaniu tylko całe wyrazy nie może zamienić część znaków na link np. w wyrazach domek, domowy, domofon, domino itd. Ma zamieniać również wyrazy bez względu na wielkość znaków. Skrypt działa tak pobieram słowa z bazy i lecę pętlą - tu problemu nie ma następnie tworze linka na podstawie tytułu i opis - tu tez ok. Problem natomiast jest przy zamianie funkcją str_ireplace() problemu by nie było gdyby każdy wyraz otaczały spacje ale tam znajdują sie przecinki kropki nawiasy kod html i inne znaki. Próbowałem to zrobić za pomocą preg_replace() oraz [^[:alnum:]] i wszystko jest ok gdy w wyrażeniu znajduje sie text statyczny, gorzej ze musi tam sie znaleźć również zmienna a wtedy wywala mi błędy. nie wiem jak sobie z tym poradzić, wiec na razie stosuje kilka wywołań str_ireplace() ale to chyba dobry pomysł nie jest ze względu na wydajność a i tak parę kombinacji znaków sobie darowałem Oto mój kod:
Chciałbym wiedzieć jak to zadanie zrealizować za pomocą wyrażeń regularnych lub chociaż jak zoptymalizować ten mój skrypt by po dodaniu jeszcze kilku znaków działało wydajnie. Niestety szukałem rozwiązania na tym i na wielu innych forach i nie znalazłem Z góry dzięki za pomoc |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 27 Pomógł: 0 Dołączył: 16.10.2007 Ostrzeżenie: (0%) ![]() ![]() |
$slowo1 ='/('.$slowo.'){1}/';
$slowo2 = '<a href="">slowo</a>; $tekst = preg_replace($slowo1, $slowo2, $tekst); $slowo pobierasz ze swojej bazy, jeśli jest ich więcej to w pętli starr ------------------------------------- www.aleproste.pl |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 12.06.2005 Ostrzeżenie: (0%) ![]() ![]() |
$slowo1 ='/('.$slowo.'){1}/'; $slowo2 = '<a href="">slowo</a>; $tekst = preg_replace($slowo1, $slowo2, $tekst); $slowo pobierasz ze swojej bazy, jeśli jest ich więcej to w pętli starr ------------------------------------- www.aleproste.pl niestety ten kod nie działa u mnie, zwraca następujący bład: Warning: preg_replace() [function.preg-replace]: Unknown modifier 'N' in G:\aminet\dokumenty\damian\slowniki\index.php on line 69 to samo gdy stosowałem preg_replace() z wyrażeniem [^[:alnum:]] Co jest nie tak? ma ktoś pomysł jak to rozwiązać? |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 05:52 |