Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Dlugosc slow
Rafiki
post 20.02.2006, 13:34:44
Post #1





Grupa: Zarejestrowani
Postów: 90
Pomógł: 0
Dołączył: 29.12.2005
Skąd: Z krzaków

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


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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
hwao
post 20.02.2006, 13:46:03
Post #2


Developer


Grupa: Moderatorzy
Postów: 2 844
Pomógł: 20
Dołączył: 25.11.2003
Skąd: Olkusz




wordwrap()

i po problemie!:)
Go to the top of the page
+Quote Post
anopak
post 20.02.2006, 13:55:12
Post #3





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 26.10.2004
Skąd: Rybnik

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


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. ?>


--------------------
Hardware: Celeron 3.06, 512 MB DDR
Software: Apache 2.0, MySQL 4.0, php 4.3.1, Zend 5.1, Firefox
Go to the top of the page
+Quote Post
Rafiki
post 20.02.2006, 15:58:53
Post #4





Grupa: Zarejestrowani
Postów: 90
Pomógł: 0
Dołączył: 29.12.2005
Skąd: Z krzaków

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


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. ?>
Go to the top of the page
+Quote Post
anopak
post 21.02.2006, 08:44:36
Post #5





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 26.10.2004
Skąd: Rybnik

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


  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...


--------------------
Hardware: Celeron 3.06, 512 MB DDR
Software: Apache 2.0, MySQL 4.0, php 4.3.1, Zend 5.1, Firefox
Go to the top of the page
+Quote Post
track
post 21.02.2006, 09:26:14
Post #6





Grupa: Zarejestrowani
Postów: 180
Pomógł: 0
Dołączył: 17.07.2003
Skąd: Łódź

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


Uzyj funkcji wordwrap tak jak napisano juz na samym poczatku. Niema sensu wywazac otwartych drzwi.
Go to the top of the page
+Quote Post
anopak
post 21.02.2006, 11:40:40
Post #7





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 26.10.2004
Skąd: Rybnik

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


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ć....


--------------------
Hardware: Celeron 3.06, 512 MB DDR
Software: Apache 2.0, MySQL 4.0, php 4.3.1, Zend 5.1, Firefox
Go to the top of the page
+Quote Post
hwao
post 21.02.2006, 11:51:02
Post #8


Developer


Grupa: Moderatorzy
Postów: 2 844
Pomógł: 20
Dołączył: 25.11.2003
Skąd: Olkusz




  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
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 18:20