Wer häufig dynamische Seiten mit PHP erstellt, kennt das Problem: Meistens muss man das Zeit-Caching des Browsers mit meta-Tags oder speziellen header-Kommandos abschalten, damit stets der aktuelle Inhalt ausgeliefert wird.
Wenn man jedoch genau feststellen kann, wann sich eine Seite ändert, so gibt es doch eine ganz einfache Methode, dennoch Seitencaching zu ermöglichen – Stichwort E-Tags.
Dabei wird für jede Seite ein eindeutiger ETag vergeben, der sich ändert, sobald die Seite nicht mehr dieselbe ist. Der ETag selbst kann theoretisch eine beliebige Zeichenkette sein. Idealerweise besteht dieser ETag nun z.B. aus einer Prüfsumme des Seiteninhalts – so führt auch die kleinste Änderung zu einer ETag-Änderung – der Browser läd die Seite erneut.
Einsetzen lässt sich dies mit PHP relativ einfach. Weiterlesen…
Man kennt es ja beispielsweise von Last.FM:
Du gehst vielleicht zu The Subways in HsD. vor 30 Tagen
Gerade bei kurz zurückliegenden Zeitangaben ist es sinnvoll, das Datum relativ anzugeben (vor x Tagen/Wochen/Monaten), vor allem dann, wenn eine genaue Angabe nicht erforderlich ist – denn eine relative Zeitangabe lässt Menschen leichter erkennen, wann das Ereignis passiert ist.
Eine solche relative Zeitangabe mit PHP zu erstellen ist garnicht so schwer. Es muss lediglich der Unterschied zwischen dem anzugebenden Zeitpunkt und dem aktuellen Datum berechnet werden. Je nach Größe des Unterschiedes wird dann die Zeitangabe in Minuten, Stunden oder Tagen angegeben. Bei länger zurückliegenden Zeitpunkten wird nur noch der Monat und das Jahr angezeigt. Es besteht natürlich die Möglichkeit, per HTML-Attribut title (Hover für Beispiel) das tatsächliche Datum anzeigen zu lassen.
Also, auf gehts:
Weiterlesen…
Schon mal versucht, mit PHP eine Sekundenangabe als Minuten anzeigen zu lassen? Beispielsweise 100 Sekunden als 1:40 Minuten?
Geht ganz einfach – wenn man weiß, wie
Diese Funktion nimmt einem die Arbeit ab und formatiert eine gegebene Sekundenzeitangabe im gewünschten Stil.
Weiterlesen…
Seit PHP5 gibt es ein neues Modul in PHP, um XML-Dateien spielend leicht zu parsen: SimpleXML.
Das ganze hat jedoch einen entscheidenden Nachteil: CDATA aus XML-Dateien wird nicht interpretiert. Das heißt auf Deutsch: Wenn man in XML Zeichen wie <, > oder & einfügen will, muss man diese umwandeln in <, > und & – das sieht natürlich nicht sehr schön aus und nimmt Platz weg. Beispiel:
<?xml version="1.0" encoding="utf-8"?>
<xmlfile>
<item>Fünf ist größer als 2: 5 > 2</item>
</xmlfile>
Das wäre dann eine ungültige XML-Datei, weil das Zeichen “>” direkt vorkommt.
Dafür gibt es nun die CDATA-Abschnitte: Innerhalb dieser Abschnitte darf <, > und & direkt stehen und wird vom Parser quasi ignoriert. Beispiel:
<![CDATA[Fünf ist größer als 2: 5 > 2]]>
Dies wäre nun gültiges XML. Das Problem mit SimpleXML ist dabei allerdings, dass dieses beim Parsen die CDATA-Abschnitte komplett weglässt, als würde dort oder stehen.
Manche Leute versuchen das ganz kompliziert zu lösen – dabei hätte ein Blick in die Dokumentation doch auch schon genügt. Dort steht nämlich folgende Option beschrieben:
LIBXML_NOCDATA (integer)
Merge CDATA as text nodes
Zu gut Deutsch: “CDATA als normalen Text behandeln”.
Gibt man nun diese Option bei simplexml_load_file() oder simplexml_load_string() mit an, so löst sich das Problem ganz von selbst auf:
simplexml_load_file('xmldatei.xml', null, LIBXML_NOCDATA);
So leicht geht das.