Kategorie: PHP


PHP Mikro-Optimierungen und Benchmarks

Mai 2011

Dies ist eine neue Reihe von Benchmarks diverser Mikrooptimierungen unter PHP 5.3 (Windows). Einer der Zeit-Werte wurde immer auf 10 ms skaliert, um einen besseren Vergleich zwischen den verschiedenen Benchmarks zu ermöglichen.

Wie immer gilt, dass sich nachträgliche Optimierungen nur selten ...

Vollständigen Eintrag anzeigen | Kommentare (7)

Readonly Property in einer Klasse

Februar 2011

Eine Eigenschaft eines Objekts, auf die ein Script von aussen nur Lesezugriff, jedoch kein Schreibzugriff hat, kann in gewissen Fällen durchaus nützlich sein, z.B. wenn eine Veränderung der Variable einen Klassen-internen Fehler auslösen würde. Allerdings gibt es in PHP kein ...

Vollständigen Eintrag anzeigen

mb_strrev - Multibyte-String umkehren

Februar 2011

PHP, bzw. dessen Multibyte-Extension, stellt keine Funktion zu Verfügung, mit welcher man die Zeichen in Strings umdrehen kann, sodass das erste Zeichen am Ende und das letzte Zeichen am Anfang steht.

Bei Single-Byte-Strings, wie man sie unter ASCII oder ISO-8859 hat, lässt sich die Funktion ...

Vollständigen Eintrag anzeigen

Gegenteil von parse_url()

Januar 2011

Folgende Funktion compile_url() stellt das Gegenteil von parse_url() dar. Sie benötigt als Argument ein Array, wie es von parse_url() zurück gegeben wird.
<?php
function compile_url($parts){
$url = '';
if(isset($parts['scheme'])){
$url .= $parts['scheme'].':';
...

Vollständigen Eintrag anzeigen

array_unique() für multidimensionale Arrays

August 2010

Die PHP-Funktion array_unique() ist gebräuchlich, um doppelte Einträge aus einem Array zu entfernen. Allerdings hat die Funktion einen Haken: Sie funktioniert bei multidimensionalen Arrays nicht so, wie sie sollte, stattdessen liefert sie "wirres Zeug".
Mit der folgenden Funktion ...

Vollständigen Eintrag anzeigen | Kommentare (5)

URL im Text intelligent erkennen

Juni 2010

Ein oft zu beobachtendes Problem ist die automatische Verlinkung von URLs in Texten wie Posts in Foren oder Kommentare in Blog. Ein Komma nach dem Link wird gerne mal als Teil der URL interpretiert und bei einer Klammer, die eigentlich zur URL gehört wird der Link ungewollt abgeschnitten.
...

Vollständigen Eintrag anzeigen | Kommentare (9)

href und URL zusammensetzen

März 2010

Wenn man beispielsweise einen Robot oder Crawler mit PHP bastelt, ist man meistens gezwungen die Hypertext-Referenzen (href-Attribute) der Links auszulesen. Doch kann man so noch nicht auf die nächste Seite zugreifen, den man besitzt ja die vollständige URL nicht.
Seite: ...

Vollständigen Eintrag anzeigen

Werte zweier Variablen tauschen

März 2010

In manchen Programmier-Vorhaben ist es vonnöten die Werte von zwei Variablen auszutauschen. Eine alte, allgemeine Methode ist das Benutzen einer temporären dritten Variable:
<?php
# Die beiden Variablen:
$a = 'Wert A';
$b = 'Wert B';
# Die Werte tauschen
$c = $a;
$a = $b;
$b = $c;
# $b ist nun ...

Vollständigen Eintrag anzeigen | Kommentare (2)

Array-Zeiger auf bestimmten Key setzen

März 2010

Seitens PHP scheint es keine Funktion oder andere Möglichkeit zu geben, den Zeiger eines Arrays (Pointer) an die Position eines bestimmten Schlüssel zu verschieben, um dann beispielsweise den nächsten Wert zu bekommen. Doch lässt sich dieses Problem relativ einfach lösen.

Die Funktion:
...

Vollständigen Eintrag anzeigen

If-Modified-Since nachbauen

November 2009

PHP unterstützt von Natur aus Anfragen wie If-None-Match oder If-Modified-Since nicht. Doch kann man mit einem kleinen Script diese Funktionalitäten nachstellen, und zwar so, dass der Benutzer keinen Unterschied zwischen der nachgebauten und der server-originalen Funktion feststellen kann.

Die ...

Vollständigen Eintrag anzeigen | Kommentare (2)

strtocamelcase() - CamelCase

November 2009

Eine simple Funktion kann einen normalen Text in sogenannte Camel-Caps- oder fachmännisch Binnenmajuskel-Schreibweise umwandeln, genauer in lowerCamelCase.
Dies kann vor allem dann nützlich sein, wenn der Text bzw. Zeichenkette keine Leerzeichen oder andere Whitespaces beinhalten darf aber ...

Vollständigen Eintrag anzeigen

Dateien mit .htaccess gzip komprimieren

Oktober 2009

Mit Hilfe der .htaccess-Datei und PHP kann man beliebige Dateien einer Website mit gzip komprimieren.
Da Prinzip ist recht simpel: Wenn eine bestimmte Datei auf dem Server angefordert wird, fügt ihr die .htaccess eine PHP-Datei vorne an, welche das gzip-Handling übernimmt.

Der benötigte Code ...

Vollständigen Eintrag anzeigen | Kommentare (5)

Herkunftsland des Besuchers ermitteln

Oktober 2009

Mit dem hier beschriebenen Script, kann man ohne zusätzliche PHP-Extensions oder Datenbanken das Herkunftsland mehr oder weniger genau bestimmen.
Man ermittelt als erstens mit der Funktion gethostbyaddr() den Host der IP-Adresse der Besuchers.
<?php
$ip = $_SERVER['REMOTE_ADDR'];
$host = ...

Vollständigen Eintrag anzeigen | Kommentare (4)

Geschwindigkeit von PHP-Scripts optimieren

Oktober 2009

Folgende Aufzählung enthält Tipps und Tricks zur Steigerung der Ausführungsgeschwindigkeit von PHP-Scripts.

1. "Identisch" ist schneller als "gleich".
<?php
if($a==$b){ }
// unteres ist schneller als oberes
if($a===$b){ }
?>
Dasselbe gilt auch für [c]!=.
gleich: ...

Vollständigen Eintrag anzeigen | Kommentare (14)

Undercover-MSN-Bot aufdecken

September 2009

Es ist wohl bekannt, dass der Bot der MSN-Suche bzw. von Bing manchmal verdeckt unterwegs ist, was verfälschte Statistiken zur Folge hat, wie beispielsweise in einem Artikel von Webmasterpro beschrieben, manchmal bringt er auch gleich noch einen Fake-Referrer mit.
Allerdings lässt sich dieser ...

Vollständigen Eintrag anzeigen | Kommentare (1)

Zahl zu Wort

September 2009

Mit einem grossen Skript kann man kleine Zahlen gross machen. Diese Funktion verwandelt eine Zahl in das entsprechende Zahlwort.
Zwar findet diese Funktion nur bei Zahlen bis 9999 Anwendung, doch wenn man das Prinzip durchschaut, kann sie beliebig erweitert werden.

Die Funktion ist so angelegt, ...

Vollständigen Eintrag anzeigen

Richtig PHP programmieren

September 2009

Diese hier aufgelisteten Tipps und Tricks sollen einen Wegweiser darstellen, wie man zukunftsorientiert und effizient programmiert, was besonders bei der Software-Entwicklung von Vorteil ist.

Zu Zeiten von PHP 5.3 sollte man PHP 4 als erstes vergessen, denn diese Version ist nun schon mehr als aus ...

Vollständigen Eintrag anzeigen | Kommentare (3)

HTML-Highlighter

September 2009

In PHP gibt es eine Funktion, die sich highlight_string() nennt. Wenn es die nun auch für HTML und XML-Code gäbe, wäre es perfekt.
Also kreieren wir sie: highlight_html()

<?php
function highlight_html($tmpCode){
if(!defined('HLH_TAG')){
# Highlight-Farben
define('HLH_TAG', '#d02'); // ...

Vollständigen Eintrag anzeigen

Thumbnail-Generator

September 2009

Mit diesem Script wird ein Bild so verkleinert, damit es die angegebene maximale Breite bzw. Höhe nicht überschreitet. Dabei wird das Seitenverhältnis beibehalten.
Dazu ruft man per <img>-Tag die PHP-Datei imgThumb.php auf und übergibt dieser via Get-Variablen die maximale Breite w, die ...

Vollständigen Eintrag anzeigen | Kommentare (3)

BBCode-Converter

September 2009

Diese Funktion dient dazu, einen mit BBCode formatierten Text in HTML umzuschreiben.

Hier sind nur wenige Tags aufgelistet. Die Funktion lässt sich beliebig erweitern.
<?php
function bbc2html($tmpText){
/*[b]*/ $tmpText = preg_replace('#\[b\](.*)\[/b\]#isU', '<b>$1</span>', ...

Vollständigen Eintrag anzeigen | Kommentare (1)

Directory-Reader

September 2009

Mit diesem Skript kann man ein Verzeichnis inklusive dessen Unterverzeichnisse rekursiv auslesen und ausgeben. Hierbei wird auf opendir() & Co verzichtet. Stattdessen benutzen wir glob().
Bei der Anwendung werden zuerst die Unterverzeichnisse ausgelesen, anschliessend werden die Dateien ...

Vollständigen Eintrag anzeigen

Eigenes phpinfo()

September 2009

Mit einem simplen Trick kann man sich sein eigenes phpinfo() kreieren.
Dazu fängt man die Ausgabe von phpinfo() per Ausgabepufferung ab und bearbeitet es entsprechend.

<?php
ob_start();
phpinfo();
$phpinfo = ob_get_clean();

# Body-Content rausholen
$phpinfo = ...

Vollständigen Eintrag anzeigen | Kommentare (1)

XML in PHP mit SimpleXML

September 2009

Folgende Funktionen sind so zusammengestellt, dass man auf einfache Weise einen Wert aus einer XML-Datei auslesen, verändern oder löschen kann. Hierbei wird auf die PHP-Extension SimpleXML zurückgegriffen.
Anhand Beispielen werden die einzelnen Funktionen erklärt. Die Anwendungen der Funktionen ...

Vollständigen Eintrag anzeigen | Kommentare (2)

XML-Datei durchsuchen

September 2009

Mit diesem PHP-Skript kann man leicht ein XML-Dokument nach einem Begriff durchsuchen.
Dazu wird hier mit SimpleXML ein XML-Objekt der Datei erzeugt, welches dann mit dem Stichwort und anderen Parametern an die Funktion übergeben wird.
Der Rückgabewert der Funktion, ein Array, enthält die xPaths ...

Vollständigen Eintrag anzeigen

Sortieren und unterteilen

September 2009

Diese Funktion bietet die Möglichkeit, einen Array caseinsensitive und natürlich zu sortieren, wobei Umlaute ihrem Grundbuchstaben zugerechnet werden, wie auch ganze Zeichenfolgen speziell behandelt werden können.
Bei der Ausgabe des Arrays werden die Elemente nach ihrem Anfangsbuchstaben in ...

Vollständigen Eintrag anzeigen

Script-Meter

September 2009

Dieses Skript ist Ideal, um ein Programm, welches sich in Entwicklung befindet, zu überprüfen. Es listet den Speicherverbrauch sowie die Zeit auf, welche das entsprechende Skript benötigt. Daneben stehen ebenfalls die Werte memory_limit und max_execution_time.

<?php
$time_start = ...

Vollständigen Eintrag anzeigen

Alles in einer Datei

September 2009

Kann man eine Website in eine einzige Datei packen?
Ja, man kann, Bilder und externes CSS inklusive.

Der Trick ist grundsätzlich ganz einfach: Man ruft dieselbe Datei mit einer bestimmten Angabe auf.

Folgende Datei heisst site.php:
<?php
if(isset($_GET['img']) & ...

Vollständigen Eintrag anzeigen

Bilder und Memory size exhausted

September 2009

Ein Problem, das oft auftritt, wenn man mit grossen Bildern in PHP arbeiten will, ist:
Fatal error: Allowed memory size of * bytes exhausted (tried to allocate * bytes) in * on line *

Normalerweise ist die Funktion imagecreatefromXYZ() daran schuld, das heisst das Bild, welches man laden will, ist ...

Vollständigen Eintrag anzeigen

Paginator

September 2009

Folgende Skripte zeigen, wie man Arrays, MySQL-Resultate oder Text auf mehrere Seiten gleichmässig verteilen kann.

Array
Mit folgendem Code wird der Inhalt eines Array auf mehrere Seiten verteilt.
Die einzelnen Objekte von $meinarray werden so auf die Seiten verteilt, damit pro Seite maximal ...

Vollständigen Eintrag anzeigen

Text kürzen

September 2009

Einen Text auf n Zeichen kürzen, ist mit links gemacht. Doch wenn man ihm dabei nicht mitten im Wort abschneiden will, wird es ein bisschen komplexer.
Im folgenden Beispiel wird mit Regex gehandelt.
Der Text wird auf n Zeichen gekürzt, anschliessend werden alle Zeichen am Ende, die keine ...

Vollständigen Eintrag anzeigen

Ersetzen ohne HTML zu zerstören

September 2009

Etwas zu ersetzen oder hervorzuheben ohne den HTML-Code zu zerstören ist nicht ganz so einfach. Mit ein bisschen Regex funktioniert es dennoch.

Im folgenden Beispiel wird die Zeichenfolge "spa" hervorgehoben (fett geschrieben), ohne den <span>-Tag zu beeinflussen.
<?php
$text = ...

Vollständigen Eintrag anzeigen

Spamschutz mit Captcha

September 2009

Mit diesem Skript kann man Formulare gegen Spambots schützen. Es generiert eine Zeichenkette, welche als Bild dargestellt wird. Der Benutzer muss diesen Code korrekt in ein Textfeld schreiben. Falls dieser nicht mit dem Bild übereinstimmt, werden die Formulareingaben ignoriert.

Der sogenannte ...

Vollständigen Eintrag anzeigen | Kommentare (1)

Mehrere verschiedene Zufallszahlen

September 2009

Diese kleine Funktion generiert mehrere Zufallszahlen, ohne dass dabei Zahlen mehrmals vorkommen können.

Die Funktion speichert die generierten Zahlen als Key in den Array, wodurch keine doppelt vorhandenen Zahlen entstehen können, da sie sich "überschreiben".
Wenn die gewünschte ...

Vollständigen Eintrag anzeigen | Kommentare (1)

is_utf8() – auf UTF-8 prüfen

September 2009

Mit dieser Funktion lässt sich feststellen, ob eine Zeichenkette als UTF-8 kodiert ist oder nicht, oder zumindest den Anschein macht, es zu sein.
Sie prüft den String auf ungültige UTF-8-Zeichen bzw. -Bytes und gibt false zurück, falls solche gefunden wurden.
<?php
function is_utf8($str){
...

Vollständigen Eintrag anzeigen | Kommentare (4)

array_map_recursive()

September 2009

array_map() kann eine nützliche Funktion sein, doch bei mehrdimensionalen Arrays knallt sie mit dem Kopf gegen die Wand.

Folgende Funktion stellt ein rekursives array_map() dar:
<?php
function array_map_recursive($func, $arr){
$a = array();
if(is_array($arr))
foreach($arr as $k =>
...

Vollständigen Eintrag anzeigen

IP verkürzen

September 2009

Wenn man aus irgend einem Grund viele IPs sammelt, würde es sich anbieten, diese zu verkürzen.
Mit einem kurzen Skript kann man eine IPv4 von durchschnittlich 12 Zeichen auf 8 oder gar 6 ohne Informationsverlust beschränken.

Im folgenden Skript werden die dezimalen Bestandteile der IP in ...

Vollständigen Eintrag anzeigen | Kommentare (1)

Dateiendung erkennen

September 2009

Dieses Skript zeigt drei Möglichkeiten, wie man an die Dateiendung heran kommt.

Zuerst wird ein Pfad vorgegeben, welcher zur gewünschten Datei führt. Ob absolut oder relativ spielt keine Rolle.
<?php
# die Datei
$path = 'http://example.com/dir/myFile.xml';
?>

Die erste Variante benutzt ...

Vollständigen Eintrag anzeigen