Zeilenumbruch in PHP

Alles, was PHP betrifft, kann hier besprochen werden.

Zeilenumbruch in PHP

Postby deiszner » 14. May 2005 23:05

Hallo,

ich hab ein Problem mit dem Zeilenumbruch.

Gibt es eine Funktion in PHP bzw. eine Klasse o.ä. mit deren Hilfe ich in einem String Zeilenumbrüche einfügen kann?

gruß
sd
Alles schöne am Leben hat einen Haken. Es ist unmoralisch, illegal oder es macht dick.
deiszner
 
Posts: 129
Joined: 30. December 2002 12:18
Location: Leipzig

Postby Wiedmann » 14. May 2005 23:48

:?:

Also irgenwie hab ich jetzt dein Problem nicht verstanden. Dir geht es doch nicht um so etwas triviales wie "\n"?
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby deiszner » 15. May 2005 10:29

Wiedmann wrote::?:

Also irgenwie hab ich jetzt dein Problem nicht verstanden. Dir geht es doch nicht um so etwas triviales wie "\n"?



Aaalso nochmal:

Ich erzeuge eine Grafik mit Php.

Image

In dieser Grafik steht Text.

Der Text kommt aus einer Datenbank.
Dummerweise habe ich keinerlei Code oder Befehl gefunden, welcher in einem String nach dem x-ten Zeichen beim vorhergehenden Wort einen Zeilenumbruch einfügt.

Weil dann der Text immer über den Rand der Grafik hinausging - habe ich den String manuell in 4 Teilstrings aufgeteilt und lasse diesen dann in die Grafik einfügen.
Alles schöne am Leben hat einen Haken. Es ist unmoralisch, illegal oder es macht dick.
deiszner
 
Posts: 129
Joined: 30. December 2002 12:18
Location: Leipzig

Postby Wiedmann » 15. May 2005 11:54

Dummerweise habe ich keinerlei Code oder Befehl gefunden, welcher in einem String nach dem x-ten Zeichen beim vorhergehenden Wort einen Zeilenumbruch einfügt.

Meinst du wordwrap()?
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby PF4 » 15. May 2005 12:01

Hi,
Das geht sicher auch einfacher...

Code: Select all
<?PHP
$string="Ich bin ein ganz blöder String der viel zu lange ist das er in eine Zeile passt";
$rest=$string;
$max_lange=20;
for($x=0;$x<100;$x++) //Sicherheitshalber
{
   if(strlen($rest)<=$max_lange)
   {
      $output[$x]=$rest;
      break;
   }
   
   $output[$x]=substr($rest,0,strrpos(substr($rest,0,$max_lange)," "));
   $rest=substr($rest,strrpos(substr($rest,0,$max_lange)," ")+1,strlen($rest));
   
}

foreach ($output as $buffer) {
   echo "$buffer\n";
}
?>
Last edited by PF4 on 15. May 2005 12:13, edited 1 time in total.
"2 Dinge sind unendlich die Dummheit der Menschheit und das Universum , aber beim Universum bin ich mir noch nicht sicher“
Albert Einstein
PF4
 
Posts: 528
Joined: 10. March 2003 09:15

Postby Jan H. Krüger » 15. May 2005 12:07

Nein, automatische Zeilenumbrüche in Bildern sind derzeit noch nicht möglich. (PS: Es wäre sicher klarer gewesen wenn du gleich gesagt hättest das du einen String in ein Bild einfügen willst).

Das einzige was derzeit machbar ist, die Länge des Strings zu errechnen und ggf. abzuschnippeln.

EDIT:
Oder man schaut einfach mal was im Manual zu finden ist bei den Kommentaren.
Da findet sich folgende Funktion welche das gewünschte erfüllt:

Code: Select all
function ImageStringWrap($image, $font, $x, $y, $text, $color, $maxwidth)
{
   $fontwidth = ImageFontWidth($font);
   $fontheight = ImageFontHeight($font);

   if ($maxwidth != NULL) {
       $maxcharsperline = floor($maxwidth / $fontwidth);
       $text = wordwrap($text, $maxcharsperline, "\n", 1);
     }

   $lines = explode("\n", $text);
   while (list($numl, $line) = each($lines)) {
       ImageString($image, $font, $x, $y, $line, $color);
       $y += $fontheight;
     }
}
Jan H. Krüger
 
Posts: 152
Joined: 24. October 2004 19:42


Return to PHP

Who is online

Users browsing this forum: No registered users and 45 guests