Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dlugosc slow
Forum PHP.pl > Forum > PHP
Rafiki
Chce sprawdzic czy uzytkownik w komentarzy nie dodaje zbyt dlugich slow co sie wiaze z rozjechaniem strony w prawo i w lewo winksmiley.jpg

napisalem cos takiego, ale niedziala :/

  1. <?
  2. $text = explode(' ', $_POST['text']);
  3.  
  4. $_POST['text'] = NULL;
  5.  
  6. foreach ( $text as $key => $value )
  7. {
  8. $lenght = strlen($value);
  9. if ( $lenght > 50 )
  10. {
  11. substr($value, 0, 50);
  12. $_POST['text'] .= $value;
  13. }
  14. }
  15. ?>


Co zrobilem nie tak ? do bazy dodaje $_POST['text'] przed tym dla bezpieczenstwa addslashes
hwao
wordwrap()

i po problemie!:)
anopak
Powinno być:
  1. <?
  2. $text = explode(' ', $_POST['text']);
  3.  
  4. $_POST['text'] = NULL;
  5.  
  6. foreach ( $text as $key => $value )
  7. {
  8. $lenght = strlen($value);
  9. if ( $lenght > 50 )
  10. {
  11. $value=substr($value, 0, 50); //substr zwraca wartość
  12. $_POST['text'] .= $value;
  13. }
  14. }
  15. ?>
Rafiki
Hmm ten mechanizm co napisalem poprawiony dziala ale nie tak jak powinien, wycina tekst i daje tylko wyciety tekst ktory mial powyzej 50 znakow a reszta wiadomosci nie jest dodawana.

Sprobowalem z funkcja wordwrap ale nic nie wyswietla :/
  1. <?
  2. echo stripslashes(nl2br(htmlspecialchars(wordwrap($result['text'], 20, "<BR>"))));
  3. ?>
anopak
  1. <?
  2. $text = explode(' ', $_POST['text']);
  3.  
  4. $_POST['text'] = NULL;
  5.  
  6. foreach ( $text as $key => $value )
  7. {
  8. $lenght = strlen($value);
  9.  
  10. //obcina znaki gdy są dłuższe niż 50
  11. if ( $lenght > 50 )
  12. {
  13. $value=substr($value, 0, 50); //substr zwraca wartość
  14. //$value.=' '.substr($value, 51, -1); //jezeli chcesz miec reszte wyrazu
  15. //możesz to zrobić w pętli, gdyby znaków było więcej niż 100...
  16. }
  17. $_POST['text'] .= $value;
  18. }
  19. ?>


teraz dodaje Ci każdy wyraz... odkomentuj drugą linijkę w if, jeżeli słowo ma być dzielone spacją. Najepiej było by tam zrobić pętle, np while($length>50){} i tam obcinać do 50 znaków, a do $length przypisywać ilość znaków jaka pozostała...
track
Uzyj funkcji wordwrap tak jak napisano juz na samym poczatku. Niema sensu wywazac otwartych drzwi.
anopak
Cytat(track @ 2006-02-21 08:26:14)
Uzyj funkcji wordwrap tak jak napisano juz na samym poczatku. Niema sensu wywazac otwartych drzwi.


Wordwrap nie zastąpi Ci wszystkiego... nie zrobić np tak, aby słowa dłuższe niż 10 znaków były ucinane i zamieniane na slowo(...), dlatego niekiedy warto wyważyć odrazu te drzwi, niż później zastanawiać się jak to zrobić....
hwao
  1. <?php
  2. function wrapHelper( $aParams ) {
  3. // w $aParams[1] powinny byc wyraz dluzsze niz 10 znaków
  4. return 'wyraz za dlugi'; // robisz z nim co chccesz tongue.gif np dzielisz spacjami
  5. }
  6. $wejscie = 'jazzzzzzzzzzzzzzzzdaaaaaaaaaaaaaaaaaa yhy :) testy by hwao';
  7.  
  8. $wyjscie = preg_replace_callback( '@([^ ]{10,})@i', 'wrapHelper', $wejscie );
  9.  
  10. echo $wyjscie;
  11. ?>


całośc z głowy, mniej lub wiecej powinno działac... tongue.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.