PHP Tipps: Verborgene Talente – Teil 2

Immer wieder einmal kommt man als Entwickler in die Situation, lange Texte auf mehrere Zeilen aufteilen zu müssen, die eine maximale Länge nicht überschreiten dürfen – ein typisches Beispiel ist z.B. ein mehrzeiliger Kommentar-Text in einem PDF-Dokument, das man mittels einer PHP-Bibliothek wie FPDF erzeugen möchte. Wie teile ich diesen Text auf mehrere Zeilen auf, ohne Wörter mittendrin abzuschneiden?

Nun, in PHP ist das sehr einfach, man muss den Text nicht mühsam mit Regular Expressions oder gar substr() zerlegen, sondern kann dazu die Funktion wordwrap() nutzen:

$mText = wordwrap  ( $orderInfoText, 70, "---", false );
$mTextArray = split("---", $mText);
foreach($mTextArray as $textLine)
{
echo $textLine . "<br />";

}

Dieser Codeschnippsel erzeugt ein Array von Texten mit jeweils maximal 70 Zeichen Länge, die man dann z.B. in einer Schleife ausgeben kann. Der letzte Parameter in der Funktion, hier mit dem Wert „false“, gibt an, ob Wörter „zerschnitten“ werden sollen – was in den meisten Fällen aber nicht gewünscht sein dürfte.
Der vorletzte Parameter fügt am Ende jeder „Zeile“ den String „—“ ein (man kann natürlich jeden anderen beliebigen String verwenden, nur sollte dieser nicht im Text selbst vorkommen), anhand dessen dann der Text in ein Array gesplittet werden kann – hier könnte man natürlich auch gleich „<br />“ oder „\n“ verwenden, um den Text auf mehrere Zeilen zu „verteilen“. Für eine Verarbeitung z.B. mit FPDF ist allerdings ein Array mit einzelnen „Zeilen“ wesentlich praktischer, diese können dann in einer Schleife dem PDF-Dokument hinzugefügt werden.

PHP Tipps: Verborgene Talente – Teil 1

Manche PHP-Funktionen können ja mehr als man denkt oder als ihr Name vermuten lässt – ein Beispiel dafür ist die Funktion „file_get_contents()“: diese erlaubt (per „php.ini“ eingeschaltete fopen wrappers [„allow_url_fopen“] vorausgesetzt) auch das Lesen entfernter Dateien durch Angabe eines URL. So lässt sich etwa blitzschnell ein RSS-Feed einlesen und z.B. mittels SimpleXML auswerten und weiterverarbeiten.

$rssItems = array();
$rssUrl = "http://www.somedomain.de/rss.xml";
try {
$xmlstr = file_get_contents($rssUrl);
if($xmlstr !== FALSE) {
$xml = new SimpleXMLElement($xmlstr);
foreach ($xml->channel->item as $item) {
$rss["title"] = utf8_decode((string)$item->title);
$rss["link"] = (string)$item->link;
$rss["description"] = utf8_decode((string)$item->description);
$rssItems[] = $rss;
}
print_r($rssItems);
}
}
catch(Exception $ex) {
echo $ex->getMessage();
}