PHP Object zu Array Rekursiv

Hallo,

bei mir kommt es öfters vor, das ich mit Objekten konfrontiert werde. Das ist so garnicht mein Favorit. Daher forme ich mir das immer in ein Array um, welches schöner zu verarbeiten und zu erweitern ist. Die einfachste und beste Methode dieses Rekursiv zu tun ist:
$array = json_decode(json_encode($object), true);


Klein, aber fein 😉

Deprecated: Assigning the return value of new by reference is deprecated in XXXX on line XXXX

Hallo, gestern Sprang mir der Fehler in den Logs entgegen:
<code>Deprecated: Assigning the return value of new by reference is deprecated in XXXX on line XXXX</code>


Diesem ist leicht Abhilfe zu leisten. Meistens hängt das mit einem Aufruf einer Klasse zusammen, welche mit $t =& new c_template; gestartet wird. Ihr müsst einfach nur das & entfernen und schon ist alles wieder gut 🙂

php5 Klassen in php4

Hallo, hab heute einen Hübschen Error bekommen bei der Installation eines Scriptes:
Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}'

Dachte erstmal an ein paar Fehler im Script und hab alles gut durchsucht, aber nichts in den Angegebenen Zeilen gefunden. Nach etwas rumgooglen war die Lösung schnell gefunden. Der Webserver hat nur php4 gehabt und das Script benötigt php5. Jetzt war das Relativ einfach zu berichtigen. So sah die angebene Line vorher aus:
<code>	public $found_stuff=false;</code>


php4 kannte die Bezeichnung public noch nicht und natürlich auch nicht private. Das wurde erst in php5 eingeführt und muss daher berichtigt werden. Aus public und private am Anfang der Klasse macht Ihr einfach var. Hier das Beispiel:
<code>	var $found_stuff=false;</code>


Ganz wichtig: Nicht einfach alles ersetzten. Am besten sich stück für stück vorarbeiten, sonst geht das Script nachher auch nicht 🙂

Date Variablen und gleichzeitig Text

Hallo, ich benutze eigentlich immer meine Standard Funktionen um das Englische Dateformat ins Deutsche zu bekommen. Das ganze sieht natürlich nicht so toll aus, weil ein String in dem Format "20.01.2011 12:13:45" sehr Clean aussieht. Da fehlt mir persönlich etwas Text und ausserdem gibt es nur wenige Seiten, wo ich eine Sekundenangabe als Sinnvoll erachte.  Weiterlesen

rand() im Kommabereich

Hallo,

für alle die, die um 23:48 Uhr gerne mal nach Sachen googlen, die eigentlich auch anders lösbar sind hier dann mal eine nette Beschreibung, wie man mit der Funktion rand() in php auch Kommazahlen generieren kann:
<code>$Vote=rand(0,500);
if($Vote>0){
$Vote=$Vote/100;
}</code>


Das ganze ist sehr Simpel, aber tut Absolut seinen Zweck 🙂

Alternative zu file_get_contents()

Die Funktion file_get_contents() läd im Grunde nur eine Datei rein oder die Ausgabe. Dies kann aber zu Fehler führen, wenn die php.ini Einstellung diese blockt. Sollte ein Fehler wie dieser kommen:
<code>* warning: file_get_contents() [function.file-get-contents]: URL file-access is disabled in the server configuration in SCRIPTNAME on line LINENUMBER</code>


Der Fehler tritt immer auf, wenn in der php.ini die Stelle "allow_url_fopen" auf "Off" gestellt ist und die Url, die geöffnet werden soll, auf einen entfernten Rechner sich befindet. Wenn Ihr Zugriff auf die php.ini habt könnt Ihr "allow_url_fopen = On" in die Datei schreiben. Ersetzt am besten die alte Passage, sonst kann es zu Fehlern kommen.

Oder Ihr ersetzt die Funktion durch eine Zeitgemässere. Hier mal ein Beispielcode:
<code>$file_content = file_get_contents("http://server.tld/datei.txt");</code>

Ersetzt die Funktion durch diese:
<code>$initial = curl_init();
curl_setopt($initial, CURLOPT_URL, "http://server.tld/datei.txt");
curl_setopt($initial, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($initial, CURLOPT_CONNECTTIMEOUT, 5);
$file_content = curl_exec($initial);
curl_close($initial);</code>


Es gibt einiges an weiteren Variaben die man setzen kann. Schaut mal bei php.net vorbei.

preg_match und Leerzeichen

Ein kurzer Zwischenruf:
Wer gerne auf Leerzeichen bei preg_match Prüfen will, muss dann "[:space:]" in die Felder mit angeben. Das ganze würde dann so aussehen:
<code>preg_match("/^[0-9a-zßüäö.[:space:]-]+$/i",$Variable)</code>


Damit wird nur auf das Alphabet und ein paar Umlaute geprüft. Als Sonderzeichen ist ., Leerzeichen und - erlaubt.

Erster Buchstaben jedes Wortes groß – ucwords #2

Vor knapp einen Monat hatte ich zum ersten mal über die Funktion ucwords() berichtet. Das ganze war auch ganz gut angekommen, aber leider geht es nicht überall 🙂 . Ein Leser hat mir geschrieben, das er mit der Funktion leider nicht den gewünschten Effekt bei Strassennamen erhält wo ein "-" enthalten ist.

Sprich er macht aus "Siegmund-Freud-Straße" einfach "Siegmund-freud-straße". Das ist aus der Sicht der Funktion absolut richtig, aber nicht aus der des Anwenders. Nach kurzen überlegen waren mir dann schon viele explode und foreach Varianten eingefallen und noch die Anzahl an "-" Zeichen zählen. Naja das ganze erschien mir dann viel zu kompliziert und ich dachte mir, das es doch etwas anderes geben muss. Danach war die Idee da, die Leerzeichen durch andere Zeichen zu ersetzten und so dann alles mehrfach durch zuarbeiten.  Weiterlesen