echo trim(preg_replace('/\s{2,}/', ' ', $content);
PDFs generieren mit dem Zend-PHP-Framework
heise Developer hat am 29.12.2008 einen Artikel zum Thema „PDFs generieren mit dem Zend-PHP-Framework“ veröffentlicht.
Das Zend-Framework unterstützt den PDF-Standard in der Version 1.4, entsprechend Adobes Acrobat 5. In den Dokumenten lassen sich Seiten hinzufügen oder entfernen, außerdem kann man die Sortierung und Dokumenteigenschaften (Autor, Titel u.Ä.) ändern. In die Dokumente lassen sich Texte, einfache Grafikelemente (Linien, Rechtecke, Polygone, Kreise und Ellipsen) sowie Bilder im JPG-, PNG- oder TIFF-Format zeichnen.
In dem Artikel wird mit einfachen Beispielen die Nutzung von Zend_Pdf veranschaulicht.
SVN: Eigenschaften (Properties) aller Dateien auflisten
Um die SVN Eigenschaften aller (in diesem Fall PHP-Dateien) auflisten zu lassen, kann die Liste der Dateien per find ermittelt werden, jede gefundene Datei wird an svn proplist übergeben:
~$: find ./* -name '*.php' -exec svn proplist --verbose '{}' \;
PHP Locale/Zeitzone setzen
Folgende Codes wurde unter PHP 5.2.x getestet.
Setzen der Standard Zeitzone:
date_default_timezone_set('Europe/Berlin');
Ausgeben aller installierten Locales:
ob_start();
system('locale -a');
$str = ob_get_contents();
ob_end_clean();
var_dump(split("\\n", trim($str)));
Setzen einer Locale:
setlocale(LC_ALL, 'de_DE.ISO8859-15', 'de_DE.ISO8859-1', 'de_DE');
setlocale(LC_ALL, 'de_DE.UTF-8');
Ob nun UTF-8 oder UTF8 gesetzt werden muss, scheint abhängig vom eingesetzten Server zu sein.
In meinem Test musste UTF-8 gesetzt werden. Weitere Infos unter: http://de.php.net/de/setlocale
neues Zend Framework Rewrite
Seit einiger Zeit findet sich im Quickstart Tutorial (englisch) des Zend Frameworks eine neue verbesserte RewriteRule:
Wird das mod_rewrite Modul unter Apache verwendet, wird empfohlen, eine .htaccess Datei mit folgendem Inhalt im Hauptverzeichnis der Domain (DocumentRoot) abzulegen:
# public/.htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ /index.php [NC,L]
Was passiert hier nun?
Die Umgebungsvariable REQUEST_FILENAME beinhaltet laut Apache-Dokumentation den vollen Pfad zur Datei oder zum Script entsprechend der Anfrage (z.B. /var/www/domain.tld/public/css/style.css).
Die drei Bedingungen (RewriteCond) prüfen nun, ob diese/s Datei/Script eine tatsächlich existierende Datei (s), symbolischer Link (l) oder ein Verzeichnis (d) sind. Wenn ja: leite die Anfrage unverändert durch und beachte keine weiteren Regeln ([L] = Last/Letzte Regel), also kein Rewrite und Ende der Prüfung. Wenn nein: Schreibe die Anfrage zu /index.php um. Das NC bewirkt, dass nicht zwischen Klein- und Großschreibung unterschieden wird (NC = no case-sensitive).
Besonderheit bei Deklaration der Rewrite Bedingungen/Regeln innerhalb eines VirtualHost
Die zuvor aufgezeigten Bedingungen gelten für die Deklaration innerhalb einer .htaccess Datei. Gleichermaßen kann das Rewriting natürlich auch innerhalb einer VirtualHost Definition deklariert werden.
Jedoch ist bei einer Deklaration innerhalb eines VirtualHosts zu beachten, dass die Umgebungsvariable REQUEST_FILENAME hier nicht den vollen, sondern den relativen Pfad vom DomainRoot beinhaltet.
In den Bedingungen muss daher die Umgebungsvariable DOCUMENT_ROOT zusätzlich vorangestellt werden!
Der Rest bleibt erhalten.
# innerhalb VirtualHost Deklaration
RewriteEngine On
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} -s [OR]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} -l [OR]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ /index.php [NC,L]
