Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: dlugosc napisu w pikselach
Forum PHP.pl > Forum > Przedszkole
a79rtur
czy jest jakas mozliwosc obliczenia dlugosci jaką napis bedzie zajmował w pikselach?
czcionka np. 11px Arial.
potrzebne jest do takiej sytuacji zeby przyciac napis <br />'em jak ktos np. wpisze zlosliwie w formularzu :
33333333333333333333333333333333333333333333333333333333333333...itd..
i wychodzi mi to poza <div>'a .
jesli tekst wpisywany jest normalnie wyrazami w textarea, to jest on łamany, a w przypadku ciągu bez spacji nie jest.
hwao
Było pare razy na forum ;-)
Z tego co pamietam to sie nie da

zainteresuj sie:
wordwrap" title="Zobacz w manualu PHP" target="_manual()
a79rtur
dziwnie dziala ta wordwrap()

  1. <?php
  2.  
  3. $str=&#092;"dddddddddddd hhhhhhhhhhh hhyyyyy yyyyyyykkkk kkkkkkk99999 9999999f ffffffff
    \";
  4. $str1=wordwrap($str,30,&#092;"<br />\");
  5. echo $str1;
  6.  
  7.  
  8. $str3=&#092;"77777777777777777777777777777777777777777777777777777777777777777\";
  9. $str4=wordwrap($str3,30,&#092;"<br />\");
  10. echo $str4;
  11.  
  12. ?>


w pierwszym przypadku łamie ładnie. w drugim juz nie. tak ze dalej nie wiem za bardzo jak to textarea zabezpieczyć, ma ktos jakis pomysł?
unknow
w polu input w formularzu wstaw po prostu maxlength="x" i zamiast x podaj okreslona liczbe znakow, jakie mozna wpisac.
a79rtur
to dziala ale dla np. input type="text" , dla <textarea> juz nie.
unknow
1. dla div'a nadaj w stylu szerokosc - style="width:x ;"
2. badz zamiast div'ow zrob po prostu tabelke, chociaz nie wiem, czy to cos da, ale warto poprobowac i komorkom nadaj szerokosc
3. moze to smiesznie zabrzmi, ale ja bym tak probowal do skutku - jezeli zadne z tamtych nie pomoze, zrob div'a i nadaj mu szerokosc, a potem w div'ie zrob tabelke i komorkom nadaj szerokosc. dwa pola ograniczone z szerokoscia, to moze akurat zmusi do lamania wierszy... moze
Andree
a może
napierw policzyc znaki do pierwszej spacji i jesli jest ich wiecej niz iles tam to
str_split" title="Zobacz w manualu PHP" target="_manual
i pozniej dac petle zeby wyswietlila tablice?
popbart
a79rtur > w funkcji wordwrap daj jako trzeci parametr 1
  1. <?php
  2. $str3=&#092;"77777777777777777777777777777777777777777777777777777777777777777\";
  3. $str4=wordwrap($str3,30,&#092;"<br />\",1);
  4. echo $str4;
  5. ?>

Powinno łamać co 30 znaków.
Kuziu
to połamie mu także krótkie słowa.

Myślę że dobrze by było tak:
  1. <?php
  2.  
  3. $tekst = $_POST['tekst'];
  4. $tablica = split(&#092;" \", $tekst);
  5.  
  6. for($i=0; $i<count($tablica); $i++){
  7.   if(strlen($tablica[$i])>20){
  8.     // funkcja która wstawi spację co 20 znaków w tej zmiennej
  9.   }
  10. }
  11.  
  12. $tekst=&#092;"\";
  13. for($i=0; $i<count($tablica); $i++){
  14. $tekst .= $tablica[$i];
  15. }
  16.  
  17.  
  18. ?>
Andree
proponuje cos takiego
  1. <?php
  2. $str3=&#092;"77777777777777777777777777777777777777777777777777777777777777777\";
  3.  
  4. $pos=strpos($str3, &#092;" \");
  5.  
  6. echo &#092;"<br><br>\".$pos;
  7.  
  8. if(($pos >30) || (!$pos))
  9. {
  10.         $str4=wordwrap($str3,30,&#092;"<br />\",1);
  11.         echo $str4;
  12. }
  13. else
  14. {
  15.         echo $str3;
  16. }
  17. ?>


pociaciacha string wtedy gdy spacja jest dalej niz 30 znakow od poczatku lub jej nie ma smile.gif

problem bedzie jak ktos wpisze np.
Cytat
cos tam ze spacjami a pozniej bbbbbbbbbbbbbbbbbbbbbeeeeeeeeeeeeeeeeeeeeezzzzzzzzzzzzzzzzzzzzzzzzzzzzz

wtedy by trzeba sprawdzac odlegosci miedzy kolejnymi spacjami i jesli jakas jest wieksza niz np. 30 to pociachac od tego miejsca do nastepnej spacji.
shpyo
a niemozna wstawic textu w diva i nadac mu wlasciwosci, ze jezeli text wyjdzie za jedo obszar to pojawi sie scroll ?
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.