![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 5.06.2003 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Prosze o pomoc w rozwiazaniu tego "problemu". Mam ksiege gosci oparta na pliku txt. Z formularza wysylam nicka, adres email i tresc komentarza (z pola textarea jako $text). Nastepnie taki wpis jest wyswietlany w tabeli o szerokosci 540 pix. Jezeli ktos w formularzu wpisze np. ok.130 znakow "!" lub ok. 50 znakow "W" w jednym ciagu bez spacji to przy wyswietlaniu takiego komentarza rozjezdza mi sie strona. Jestem poczatkujacym PHPowcem, niebardzo wiem jak to rozwiazac - szukalem w necie rozwiazania ale nic nie znalazlem ![]() W jaki sposob rozwiazac ten problem? - prosze o lopatologiczne wytlumaczenie. pozdr. |
|
|
![]() |
![]()
Post
#2
|
|
![]() Administrator planeta/IRC Grupa: Przyjaciele php.pl Postów: 385 Pomógł: 0 Dołączył: 19.04.2003 Skąd: Zabrze Ostrzeżenie: (0%) ![]() ![]() |
-------------------- "Programmers are in a race with the Universe to create bigger and better idiot-proof programs, while the Universe is trying to create bigger and better idiots. So far the Universe is winning."
Cudi's devBlog |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 5.06.2003 Ostrzeżenie: (0%) ![]() ![]() |
Dzieki
Nie jest to coprawda idealne rozwiazanie - gdyz po kazdych X znakach wstawia przelamanie linii a nie tylko w wyrazach dluzszych niz X znakow - ale dobre i to ![]() pozdr. |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 166 Pomógł: 0 Dołączył: 30.01.2003 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Zobacz jeszcze to może sie przyda.
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Możesz zrobić tak:
[php:1:2e82a81c2c]<?php function podziel($string,$dl) { $t=explode(" ",$string); $il=count($t); for($i=0; $i<$il; $i++) { if(strlen($t[$i])<$dl) { $ret.=" ".$t[$i]; } else { $ret.=" ".substr($t[$i],0,$dl); } } return($ret); } ?>[/php:1:2e82a81c2c] -------------------- |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 5.06.2003 Ostrzeżenie: (0%) ![]() ![]() |
Pozwolilem sobie to troszke zmienic:
[php:1:c0fcbf0152]<?php function podziel($string, $dl) { $t=explode(" ", $string); $il=count($t); for($i=0; $i<$il; $i++) { if(strlen($t[$i])<$dl) { $ret.=" ".$t[$i]; } else { $ret.=" ".wordwrap($t[$i],50,"<br>",1); } } return($ret); } ?>[/php:1:c0fcbf0152] I teraz juz dzieli tylko te wyrazy dluzsze niz X znakow. Zastanawia mnie tylko jedno - czemu jak wpisze takie cos: [php:1:c0fcbf0152]<?php $new_string=wordwrap($oryginal_string, 50, " ", 1); print "$new_string"; ?>[/php:1:c0fcbf0152] To w stringu co 50 znakow zostanie wstawiona spacja ale nie bedzie przelamywac tekstu w tych miejscach tylko wyswietli go w jednej lini ze spacjami co 50 znakow. Dopiero wymuszenie przelamania "pomaga": [php:1:c0fcbf0152]<?php $new_string=wordwrap($oryginal_string, 50, "<br>", 1); print "$new_string"; ?>[/php:1:c0fcbf0152] Tylko w tym przypadku to przelamuje co 50 znakow pomimo tego ze jest miejsce by wstawic kolejny ciag 50 znakow. pozdr. |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarząd Postów: 3 503 Pomógł: 28 Dołączył: 17.10.2002 Skąd: Wrocław ![]() |
[php:1:f0fff9a508]<?php
function WordWrap2($tresc, $cols, $cut){ // word wraping $len = strlen($tresc); $tag = 0; for ($i = 0; $i < $len; $i++) { $chr = $tresc[$i]; if ($chr == '<') { $tag++; } elseif ($chr == '>') { $tag--; } elseif (!$tag && $chr==" "){ $wordlen = 0; } elseif (!$tag) { $wordlen++; } if ((!$tag) && ($wordlen) && (!($wordlen % $cols))) { $chr .= $cut; } $result .= $chr; } return $result; } $wrapped = WordWrap2($stringToWrap, 40, ' '); ?>[/php:1:f0fff9a508] Wyciągnięte z komentarzy do manuala, nie rozwala znaczników HTML. -------------------- |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 5.06.2003 Ostrzeżenie: (0%) ![]() ![]() |
Wszystko ladnie pieknie - poniewaz ja w komentarzu nie uzywam znacznikow htmla to w moim przypadku ta funkcje "WordWrap2" dziala tak samo jak "podziel" ale... dalej musze wymuszac lamanie lini bo jak wstawie sama spacje co X znakow to linia bedzie wygladac tak:
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() IMO wstawienie spacji powinno stwarzac mozliwosc przelamania lini w tym miejscu a u mnie tak sie nie dzieje - czemu? pozdr. |
|
|
![]()
Post
#9
|
|
![]() Grupa: Przyjaciele php.pl Postów: 786 Pomógł: 0 Dołączył: 18.03.2002 Skąd: Wroclaw/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Cytat IMO wstawienie spacji powinno stwarzac mozliwosc przelamania lini w tym miejscu a u mnie tak sie nie dzieje - czemu?
masz racje. problem dotyczy MSIE. jesli wstawisz spacje co np 30 liter W tekst zostanie przelamany. jesli co 30 ! to juz tak nie bedzie.
pozdr. najprotszym sposobem poradzenia sobie z problemem (moj patent ;) to wstawiac spacje a nastepnie & nbsp; wtedy obchodzi sie dziure w MSIE i przegladarka wie ze skonczyl sie tekst i moze przelamac. pozdrawiam __ Sorki za zmianę, ale nie było widać entity i nie zakumałem co wstawiasz, zeby ominąc bug'a {scanner} -------------------- .. make web your home ..
|
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 51 Pomógł: 0 Dołączył: 19.04.2002 Skąd: Zielona Góra Ostrzeżenie: (0%) ![]() ![]() |
tzn. chcesz powiedzeć, że nawet jak wpiszesz normalnie (z spacjami) tekst, to i tak strona ci się rozjeżdża? Przecież jak się parametr WIDTH w tabeli ustawi, to tabela nie ma prawa się wydłużać, chyba, że masz kilka kolumn i w jednej długość wyznaczyłeś w pixelach a w innej w procentach...
-------------------- revolution, the only solution
|
|
|
![]()
Post
#11
|
|
![]() Grupa: Przyjaciele php.pl Postów: 786 Pomógł: 0 Dołączył: 18.03.2002 Skąd: Wroclaw/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Cytat tzn. chcesz powiedzeć, że nawet jak wpiszesz normalnie (z spacjami) tekst, to i tak strona ci się rozjeżdża? Przecież jak się parametr WIDTH w tabeli ustawi, to tabela nie ma prawa się wydłużać, chyba, że masz kilka kolumn i w jednej długość wyznaczyłeś w pixelach a w innej w procentach... bzdura. MSIE jest madrzejszy gdy idzie o !!!.
-------------------- .. make web your home ..
|
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarząd Postów: 3 503 Pomógł: 28 Dołączył: 17.10.2002 Skąd: Wrocław ![]() |
Cytat problem dotyczy MSIE. jesli wstawisz spacje co np 30 liter W tekst zostanie przelamany. jesli co 30 ! to juz tak nie bedzie. Nie rozumiem... U mnie to działa bez problemów...
-------------------- |
|
|
![]()
Post
#13
|
|
![]() Grupa: Przyjaciele php.pl Postów: 786 Pomógł: 0 Dołączył: 18.03.2002 Skąd: Wroclaw/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Cytat Nie rozumiem... U mnie to działa bez problemów...
pod adresem: http://odothui.jukowski.com/wrapping.html umiescilem prosty przyklad. kod: Kod <html>
<body> <table width="150"><tr> <td>ooo ooo ooo ooo ooo ooo ooo ooo ooo ooo ooo ooo ooo ooo ooo ooo ooo ooo </td> </tr></table> <table width="150"><tr> <td>!!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! </td> </tr></table> </body> </html> pozdrawiam -------------------- .. make web your home ..
|
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 5.06.2003 Ostrzeżenie: (0%) ![]() ![]() |
Fucktycznie jak wpisze ciag liter np. WWWWWWWWWWW... to spacja przelamuje linie a jak wpisze ciag !!!!!!!... lub
![]() ![]() ![]() ![]() Mam IE 5.0 - to wszystko jest po... pozdr. |
|
|
![]()
Post
#15
|
|
![]() Grupa: Zarząd Postów: 3 503 Pomógł: 28 Dołączył: 17.10.2002 Skąd: Wrocław ![]() |
OK. Teraz już wiem. Tym razem punkt dla Ciebie
![]() -------------------- |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 5.06.2003 Ostrzeżenie: (0%) ![]() ![]() |
Scanner ta funkcja WordWrap2 tez nie jest doskonala - coprawda po zamianie spacji na <br> zabezpiecza przed wpisem dlugiego ciagu liter jak i ciagu znakow typu "!" i "?" nie wywala znacznikow HTMLa ale chyba przez to wyklada sie przy znaku "<" lub ">"
![]() pozdr. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 12:38 |