Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Długosc wpisu TEXTAREA a rozjezdzajaca sie strona
Koola
post
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 sad.gif
W jaki sposob rozwiazac ten problem? - prosze o lopatologiczne wytlumaczenie.

pozdr.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 15)
Cudi
post
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%)
-----


http://pl.php.net/manual/pl/function.wordwrap.php


--------------------
"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
Go to the top of the page
+Quote Post
Koola
post
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 biggrin.gif

pozdr.
Go to the top of the page
+Quote Post
dob
post
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.
Go to the top of the page
+Quote Post
spenalzo
post
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]


--------------------

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


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
Koola
post
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:

questionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gif questionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gif questionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gif itd. bez przelamania

IMO wstawienie spacji powinno stwarzac mozliwosc przelamania lini w tym miejscu a u mnie tak sie nie dzieje - czemu?

pozdr.
Go to the top of the page
+Quote Post
kurtz
post
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?

pozdr.
masz racje. problem dotyczy MSIE. jesli wstawisz spacje co np 30 liter W tekst zostanie przelamany. jesli co 30 ! to juz tak nie bedzie.

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 ..
Go to the top of the page
+Quote Post
konrad_vme
post
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
Go to the top of the page
+Quote Post
kurtz
post
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 ..
Go to the top of the page
+Quote Post
scanner
post
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...


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
kurtz
post
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 ..
Go to the top of the page
+Quote Post
Koola
post
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 questionmark.gifquestionmark.gifquestionmark.gifquestionmark.gif?... to wszystko jest w jednej linii ze spacjami co X znakow.
Mam IE 5.0 - to wszystko jest po...

pozdr.
Go to the top of the page
+Quote Post
scanner
post
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 smile.gif)


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
Koola
post
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 ">" sad.gif

pozdr.
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 Aktualny czas: 21.08.2025 - 12:38