Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Obcinanie tekstu z HTMLem
wujek2009
post
Post #1





Grupa: Zarejestrowani
Postów: 350
Pomógł: 31
Dołączył: 23.05.2010

Ostrzeżenie: (0%)
-----


Cześć.

Czy jest może gotowa biblioteka, która będzie mi ucinała tekst (za pomocą np. substr) - tylko ważna informacja: w tekście są fragmenty htmlu, więc nie chciałbym aby ucięło w złym momencie i w konsekwencji powstał błąd składniowy i strona mi się rozsypała.

Wiem, że alternatywą byłoby użycie strip_tags (na usunięcie HTMLa) i wówczas cięcie, ale interesuje mnie jednak opcja przy zachowaniu kodu HTML.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
magnus
post
Post #2





Grupa: Zarejestrowani
Postów: 99
Pomógł: 15
Dołączył: 15.11.2007
Skąd: Nowogród Bobrz.

Ostrzeżenie: (0%)
-----


Z html-em będzie ciężko, bo możesz mieć jakiś znacznik otwarty na początku a zamknięty na końcu i jak nie utniesz, to się nie będzie zgadzać.
Nie znam żadnej gotowej funkcji na to, ale może lepiej ucinać to już po stronie klienta, np. wykorzystując CSS i właściwość 'overflow'.
Go to the top of the page
+Quote Post
sebastian.rozmus
post
Post #3





Grupa: Zarejestrowani
Postów: 48
Pomógł: 12
Dołączył: 7.03.2012

Ostrzeżenie: (0%)
-----


  1. function truncateHTML($html, $length)
  2. {
  3. $truncatedText = substr($html, $length);
  4. $pos = strpos($truncatedText, ">");
  5. if($pos !== false)
  6. {
  7. $html = substr($html, 0,$length + $pos + 1);
  8. }
  9. else
  10. {
  11. $html = substr($html, 0,$length);
  12. }
  13.  
  14. preg_match_all('#<(?!meta|img|br|hr|input\b)\b([a-z]+)(?: .*)?(?<![/|/ ])>#iU', $html, $result);
  15. $openedtags = $result[1];
  16.  
  17. preg_match_all('#</([a-z]+)>#iU', $html, $result);
  18. $closedtags = $result[1];
  19.  
  20. $len_opened = count($openedtags);
  21.  
  22. if (count($closedtags) == $len_opened)
  23. {
  24. return $html;
  25. }
  26.  
  27. $openedtags = array_reverse($openedtags);
  28. for ($i=0; $i < $len_opened; $i++)
  29. {
  30. if (!in_array($openedtags[$i], $closedtags))
  31. {
  32. $html .= '</'.$openedtags[$i].'>';
  33. }
  34. else
  35. {
  36. unset($closedtags[array_search($openedtags[$i], $closedtags)]);
  37. }
  38. }
  39.  
  40.  
  41. return $html;
  42. }


Funkcja znaleziona w necie (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 21:00