![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 183 Pomógł: 0 Dołączył: 19.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam. Mam pewną zagwostkę. Powiedzmy, że mam taki tekst:
Jakie wyrażenie zastosować, by zostawić tylko 1/2/3/4/X linki w tym tekście, a pozostałe zlikwidować i zostawić tylko tekst pomiędzy <a></a> ? Oczywiście przyjmując, że:
Czyli np dla "pseudofunkcji" zostaw_linki(2) efekt (dla tekstu powyżej) byłby:
Ten post edytował barat 8.12.2009, 10:11:14 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
1. Najpierw policz ile tych linków jest (choćby preg_match_all)
2. Jeśli mieści się w limicie - zostaw tekst 3. Jeśli nie, musisz znaleźć zamknięcie ostatniego dozwolonego i cały tekst za nim pozbawić tagów A. Wydaje się proste? Nie do końca tak jest. Wszystko dlatego, że tylko str_replace posiada parametr OFFSET. Najwygodniejszy zaś jest preg_replace, który go nie posiada.. Na dodatek musisz przechwycić pozycję zamknięcia, do czego funkcje wyrażeń regularnych nie są przystosowane. Musisz zrobić własną funkcję robiącą to wszystko. Przydają Ci się: preg_replace, stripos, ale jest to jak najbardziej wykonalne i łatwe jeśli się zastanowisz jak użyć podanych przeze mnie funkcji (IMG:style_emoticons/default/smile.gif) Ten post edytował thek 8.12.2009, 11:10:26 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 5.10.2025 - 12:20 |