Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]problem z funkcją skracającą artykuły
Forum PHP.pl > Forum > Przedszkole
lamcpp
Moja funkcja skracająca artykuły by pokazywać pierwsze 200 znaków (ustawione poprzez $ilosc_znakow = 200) działa dobrze do momentu gdy ostatnim znakiem jest selektor html np. <br />, &nbsp, <pre> itd.. W przypadku gdy dwusetny czyli ostatni znak to będzie np <br to ucina mi wyrażenie <br /> co powoduje że podczas walidacji strony wystepuje błąd (niezamknięty znacznik). Jak zmodyfikować tą funkcję by skracała 200 znaków a jeśli znajdzie selektor css to by rozpoczęła skracanie przed/za selektorem (tzn by go nie ucięła)
Funkcja:
  1. function skroc_artykuly($artykul,$ilosc_znakow){
  2. if(strlen($artykul) > $ilosc_znakow){
  3. return substr($artykul,0,strrpos(substr($artykul,0,$ilosc_znakow)," "));
  4.  
  5. }
  6. else
  7. return $artykul;
  8. }
Korab
Wpleć tam zmienną, która np. jest równa 0, jeżeli żaden selektor ani znacznik nie jest niezamknięty, a jeżeli jest inaczej, to ma wartość poziomu.... Hm, przykład może lepiej podam:
  1. <div>
  2. <p>
  3. <a href="">
  4. <em>
  5. Cośtam
  6. </em>
  7. </a>
  8. </p>
  9. </div>

Zmienna po divie przyjmuje wartość 1, po p - 2, po a - 3, po em - 4 (w tym momencie 4 znaczniki są niezamknięte), a potem przyjmuje kolejno wartości 3 (po </em>), 2 (po </a>, 1 (po </p>) i 0 (po </div>).
A jak to zaimplementujesz, to już zadanie dla Ciebie.
Swoją drogą, to już dobry pomysł w ogóle na osobną klasę smile.gif
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.