Zeilenumbruch nach Pixeln

Alles, was PHP betrifft, kann hier besprochen werden.

Zeilenumbruch nach Pixeln

Postby IceSpot » 06. January 2006 23:01

Abend,

ich suche eine Möglichkeit eine Zeile Text, nach einer bestimmten Anzahl von Pixeln in der Breite, umzubrechen.
Ich habe bereits die Funktion imagettfbbox() gefunden aber die ist sehr umständlich, hat PHP weiter solche Funktion von Hause herraus dabei oder muss man sich so was selber ausdenken?

Die Funktionen (z.B.: chunk_splitt() ) zum Umbruch nach einer bestimmten Anzahl von Zeichen sind nicht das richtige für meinen Einsatzzweck.


IceSpot
IceSpot
 
Posts: 2
Joined: 22. December 2005 10:28

Postby KingCrunch » 06. January 2006 23:17

Guck mal nach Möglichkeiten innerhalb HTML bzw CSS
Nicht jeder Fehler ist ein Bug ...
KingCrunch
 
Posts: 1724
Joined: 26. November 2005 19:25

Postby deepsurfer » 07. January 2006 15:02

zum Umbruch nach einer bestimmten Anzahl von Zeichen sind nicht das richtige für meinen Einsatzzweck.


Wenn ich das richtig verstehe soll das ergebnis auch so aussehen das zum beispiel ein satz zu sehen ist, auf einmal kommt der umbruch befehl auf ein bestimmtes Pixel und nun wird statt am Buchstaben im Buchstaben umgebrochen.

So würde zum beispiel ein Buchstabe in sich selber abgeschnitten. z.b. kann es passieren das man vom Buchstaben "T" dann ein halbes T sieht und in der nächsten Zeile des rest des Ts ???

Meinst du das ?
chirio Deep
Wie sagte einst der MCP aus Tron auf dem Bildschirm zu schreiben Pflegte
" ... end of communication ... "
User avatar
deepsurfer
AF Moderator
 
Posts: 6440
Joined: 23. November 2004 10:44
Location: Cologne
Operating System: Win-XP / Win7 / Linux -Debian

Postby KingCrunch » 07. January 2006 15:29

Eine andere Interpretationsmöglichkeit wäre, dass du sagst "nach x Pixel den Satz umbrechen", so dass er dann den Buchstaben, der zerschnitten werden würde, auf die nächste Zeile kommt. Wie er schon sagt gibt es in PHP afaik keine Funktion, die das so erlaubt, sondern nur Umbruch nach x Zeichen, was aber kein Pixel-nähernden Umbruch erlaubt.

Ich denke aber, dass sowas
Code: Select all
<div style="width: x px;">Blablablub</div>

möglich ist. Ob das nun so richtig ist, weiß ich grad nicht, da ich die Referenz von CSS nicht zur Hand habe.
Nicht jeder Fehler ist ein Bug ...
KingCrunch
 
Posts: 1724
Joined: 26. November 2005 19:25

Postby deepsurfer » 07. January 2006 15:53

möglich ist. Ob das nun so richtig ist, weiß ich grad nicht, da ich die Referenz von CSS nicht zur Hand habe.

Meinscht dasch hier :?:
http://css4you.de/width.html
dort auf "beispiel" klicken !


oder das.... nur IE konform :(
http://css4you.de/white-space.html
chirio Deep
Wie sagte einst der MCP aus Tron auf dem Bildschirm zu schreiben Pflegte
" ... end of communication ... "
User avatar
deepsurfer
AF Moderator
 
Posts: 6440
Joined: 23. November 2004 10:44
Location: Cologne
Operating System: Win-XP / Win7 / Linux -Debian

Postby KingCrunch » 07. January 2006 17:12

Ich meine ersteres, wobei ich nicht weiß, ob IceSpot das auch meint.
Nicht jeder Fehler ist ein Bug ...
KingCrunch
 
Posts: 1724
Joined: 26. November 2005 19:25

Postby deepsurfer » 07. January 2006 17:21

Mal schaun ob er sich nochmal meldet ;)
chirio Deep
Wie sagte einst der MCP aus Tron auf dem Bildschirm zu schreiben Pflegte
" ... end of communication ... "
User avatar
deepsurfer
AF Moderator
 
Posts: 6440
Joined: 23. November 2004 10:44
Location: Cologne
Operating System: Win-XP / Win7 / Linux -Debian

Postby IceSpot » 08. January 2006 10:29

Also was ich möchte ist die Überprüfung ob eine Zeile breiter als eine gewisse Anzahl an Pixel ist, ist sie breiter soll z.b. an einer sinnvollen Stelle(Wortende) umbebrochen werden.

ich hab bereits was hinbekommen:

Hier wird nach 95 Zeichen umgebrochen, aber nur wenn die Zeile breiter als 700 Pixel ist.

Code: Select all
   $zeilen=explode("\r\n", $test);

   $ausgabe="<table border=\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"2\" class=\"codetext\">\r\n";
 
   $m=1;
   for($n=0; $n<count($zeilen); $n++) {
    $farbe="#CCCCCC";
    $ausgabe.="<tr bgcolor=\"".$farbe."\">\r\n<td valign=\"top\" width=\"1\">".nullstellen($m, count($zeilen))."</td>\r\n";
    $breite=imagettfbbox(10, 0, "verdana", $zeilen[$n]);
    if($breite[2]>700) {
     $ausgabe.="<td valign=\"top\">".eregi_replace(" ", "&nbsp;", chunk_split(htmlspecialchars($zeilen[$n]), 95, "<br>"))."</td></tr>\r\n";
    }
    else {
     $ausgabe.="<td valign=\"top\">".eregi_replace(" ", "&nbsp;", htmlspecialchars($zeilen[$n]))."</td>\r\n</tr>\r\n";
    }
    $m++;
   }
   $ausgabe.="</table>\r\n";

   echo "<tr><td>".$ausgabe."</td></tr>";


Leider kann das, von mir gewünschte Ergebniss, durch die Browser Einstellungen der Benutzer gesprengt werden.
IceSpot
 
Posts: 2
Joined: 22. December 2005 10:28

Postby deepsurfer » 08. January 2006 11:48

Leider kann das, von mir gewünschte Ergebniss, durch die Browser Einstellungen der Benutzer gesprengt werden.

Jo, setze dazu mal den width nicht auf Prozent sondern auf einen festen Wert, denn dann wird die Tabelle nicht mehr verkleinert wenn der Browser eine andere Einstellung bekommt.

In deinem Fall, dadurch das die Tabelle keinen Rahmen hat mindestens auf
width=\"701\"
chirio Deep
Wie sagte einst der MCP aus Tron auf dem Bildschirm zu schreiben Pflegte
" ... end of communication ... "
User avatar
deepsurfer
AF Moderator
 
Posts: 6440
Joined: 23. November 2004 10:44
Location: Cologne
Operating System: Win-XP / Win7 / Linux -Debian


Return to PHP

Who is online

Users browsing this forum: No registered users and 24 guests