Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][PHP]Dzielenie tekstu
Forum PHP.pl > Forum > Przedszkole
hapek1
Witam
Czy jest możliwe dzielenie dzielenie tekstu na np. 500 znaków tzn. mam np. tekst 3198 znaków (łącznie ze spacjami) i chcę go podzielić na tekst 500 znakowy. Chciałbym też aby nie dzieliło zdań na części tylko tekst kończył się na .?!

Nie wiem czy jest to możliwe ale może jednak. A może jest gdzieś taka stronka co coś takiego robi.
Fifi209
No to musisz się zdecydować, bo jak chcesz podzielić po 500 znaków to ani znaku mniej/więcej. W przypadku kiedy narzucasz, że ma kończyć się kropką to będziesz musiał troszkę doliczyć. winksmiley.jpg
hapek1
na max. 500 znaków może być mniej
Fifi209
Nic lepszego na poczekaniu nie wymyślę:

  1. <?php
  2.  
  3. header('Content-Type: text/html; charset=utf8');
  4.  
  5. $tekst = file_get_contents('tekst.txt');
  6.  
  7. function cut($string, $maxchr, $char) {
  8. $str = array();
  9. $x = explode('.', $string);
  10.  
  11. foreach ($x as $value) {
  12. static $temp='';
  13. if (strlen($temp) < $maxchr) {
  14. $temp .= $value;
  15. }else{
  16. $str[] = $temp;
  17. $temp='';
  18. }
  19. }
  20.  
  21. return $str;
  22. }
  23.  
  24. echo '<pre>';
  25. var_dump(cut($tekst, 200, '.'));
  26.  
  27. ?>


Zawartość pliku tekst.txt:
Kod
W 2002 roku Zeev Suraski oraz Andi Gutmans ponownie rozpoczęli znaczącą modernizację silnika Zend, mającą na celu dodanie do PHP modelu obiektowego, podobnego do tych, który istnieje w innych językach obiektowych. W lutym 2003 ukazała się wersja "alpha" PHP oznaczona numerem 5.0.0. Stabilna wersja została wydana w lipcu 2004 roku.

Pojawił się w niej całkowicie nowy model programowania obiektowego, co spowodowało utratę pełnej kompatybilności z poprzednimi wersjami PHP. W ramach tego modelu zmieniony został sposób reprezentacji obiektów. W wersjach wcześniejszych obiekt był jednocześnie zmienną, co sprawiało duże trudności, dlatego też w wersji 5 na wzór Javy zmienna obiektowa stała się jedynie referencją do właściwego obiektu. Obecnie operacja przypisania powoduje powstanie drugiej referencji wskazującej na ten sam obiekt.

Oprócz tego udostępniono zbiór interfejsów znacznie rozszerzających możliwości klas użytkownika[8]. Nastąpiły także zmiany oraz nowości w systemie modułów PHP. Funkcje obsługi języka XML zostały przepisane i wbudowane bezpośrednio w jądro aplikacji. Oprócz narzędzi obsługujących model DOM udostępniono SimpleXML – prosty interfejs do modyfikacji dokumentów XML. Wprowadzono SQLite, nowy, domyślnie "wkompilowany" silnik baz danych[9]. 24 listopada 2005 roku ukazała się wersja 5.1, w której pojawił się PDO – ujednolicony sterownik oraz preprocesor zapytań umożliwiający komunikację z różnymi systemami baz danych. Kolejna wersja - 5.2, pojawiła się 2 listopada 2006 roku i skoncentrowana była na rozbudowie mechanizmów wejścia/wyjścia (obsługa formatów ZIP i JSON, filtry wejścia, obserwacja postępów przesyłania plików) i zarządzaniu pamięcią[10]. Aktualna podwersja tej gałęzi to 5.2.12 wydana 17 grudnia 2009; 48 dni temu.

30 czerwca 2009 wydano PHP 5.3[11]. Główne zmiany obejmują wprowadzenie w języku obsługi przestrzeni nazw. Pojawiły się również wyrażenia lambda i tzw. domknięcia (znane z takich języków jak JavaScript, Ruby czy Lisp). Oprócz tego dopracowano również obsługę metod statycznych i poprawiono działanie PHP pod systemem Windows wprowadzając kompilacje VC9 oraz eksperymentalne wersje binarne pod x64. Ponadto wprowadzono mysqlnd - opcjonalny, natywny zamiennik PHP dla libmysql oraz poprawiono wiele błędów.
blade-mrn
Ja kiedyś pisałem taką funkcję:
  1. function podziel_ciag ($ciag, $ile) //łamie ciąg znaków po określonej ilości znaków ($ile)
  2. {
  3. $j = 0;
  4. for ($i=0;$i<=strlen($ciag);$i++)
  5. {
  6. $c = $c.$ciag[$i];
  7. $j++;
  8. if (($j>=$ile)&&($ciag[$i] == ' '))
  9. {
  10. $c = $c.'<br />';
  11. $j = 0;
  12. }
  13. }
  14. return $c.'<br />';
  15. }

Nie do końca odpowiada twoim kryteriom bo ona tylko łamie wiersz po podanej ilości znaków ale może cię naprowadzi na jakiś pomysł
Fifi209
Cytat(blade-mrn @ 3.02.2010, 17:28:51 ) *
Ja kiedyś pisałem taką funkcję:
  1. function podziel_ciag ($ciag, $ile) //łamie ciąg znaków po określonej ilości znaków ($ile)
  2. {
  3. $j = 0;
  4. for ($i=0;$i<=strlen($ciag);$i++)
  5. {
  6. $c = $c.$ciag[$i];
  7. $j++;
  8. if (($j>=$ile)&&($ciag[$i] == ' '))
  9. {
  10. $c = $c.'<br />';
  11. $j = 0;
  12. }
  13. }
  14. return $c.'<br />';
  15. }

Nie do końca odpowiada twoim kryteriom bo ona tylko łamie wiersz po podanej ilości znaków ale może cię naprowadzi na jakiś pomysł

Dlatego napisałem mu coś o co prosił.

Co do Twojego posta to co zrobiłeś to zwykły: wordwrap
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.