PHP: Zweiter Parameter von trim, ltrim und rtrim

Published 2006-09-06, 09:36

Wer mit PHP an Daten oder Texten herumspielt nutzt sicherlich öfter mal die Funktionen trim(), ltrim() oder rtrim(). Irgendwie scheine ich den mit PHP 4.1.0 eingeführten Paramter charlist verpasst zu haben:

string trim ( string str [, string charlist] )

In verschiedenen Kopien des Manuals kommt er auch teilweise gar nicht vor – zum Beispiel in der deutschen .chm-Datei. Sehr seltsam.

Auf jeden Fall gibt es ihn, und er ist absolut toll und spart ne Menge Arbeit. Falls noch jemand so doof ist wie ich und das bisher übersehen hat: Anschaun.

Pingfix 0.4b gleich hinterher

Published 2006-09-06, 00:17

Für Eilige: Neue Version 0.4b unter http://betamode.de/wp-pingfix/

Mein gestern veröffentlichtes Plugin Pingfix kam eigentlich ganz gut an. Dummerweise hatte ich jedoch einen kleineren Bug übersehen, der das Löschen alter Entwürfe teilweise mit einer unschönen Fehlermeldung quittierte. Dieser wurde nun behoben.

Zudem äußerte Boris Bedenken gegenüber einem voll beschreibbaren (chmod 777) „wp-content“-Verzeichnis. Zurecht. Ich hatte die Funktion ohne großes Nachdenken aus einem anderen Plugin übernommen.

Deshalb hat Pingfix nun einen eigenen Ordner für die Logfiles, der bei der Installation jedoch von Hand erstellt werden muss. Der Name des Logfiles ist ab sofort auch vom (verschlüsselten und gekürzten) Datenbankpasswort abhängig, so dass der Dateiname des Logfiles nicht mehr erraten werden kann. Dadurch wird es vor Zugriffen von außen geschützt.

Die nun aktuelle Version 0.4b, und die aktualisierte Installationsanleitung, gibt es wieder unter: http://betamode.de/wp-pingfix/

Aktuelles zu Pingfix: http://betamode.de/kategorie/projekte/pingfix/

Endlich: WordPress Pingfix 0.4(a)

Published 2006-09-04, 10:16

Man glaubt es kaum, aber heute habe ich es endlich geschafft Version 0.4 meines WordPressplugins „PingFix zu veröffentlichen: http://betamode.de/wp-pingfix/

Der Leser fragt sich nun sicher, was dieses PingFix eigentlich tut und wieso er das braucht. Die Antwort von der Pingfix-Seite:

PingFix verbessert und erweitert die WordPress-Pingfunktionen für Pingservices, Trackbacks und Pingbacks.

Aha. Etwas genauer:

Mit PingFix sendet ein Beitrag nur dann Pings, wenn er erstmalig im Weblog veröffentlicht wird, nicht bei jeder kleinen Änderung am Text. Beiträge, die erst in der Zukunft auf dem Blog erscheinen sollen, senden auch erst dann ihre Pings. Nicht schon, wenn der Beitrag geschrieben wird. Zusätzlich werden alle Pings zur besseren Kontrolle in einem Logfile protokolliert.

Welche Blogger brauchen das Plugin?
Meiner Meinung nach vor allem Blogger, die ihre geposteten Beiträge häufig editieren (Wer tut das nicht…) oder zu geplanten Zeiten veröffentlichen – diese Vorgänge werden durch das Plugin nämlich korrigiert und beschleunigt.

Bisher ging es doch auch ohne, wieso brauche ich nun plötzlich ein Plugin?
Mit dem Plugin läuft alles ein wenig „korrekter“ und besser ab: ein Ping bei erstmaliger Veröffentlichung reicht; ein Ping macht erst Sinn wenn der Beitrag veröffentlicht ist. Zudem gibt es nun ein schickes Logfile in dem die Pings protokolliert werden.

Download & Anleitung: http://betamode.de/wp-pingfix/
Aktuelles zu Pingfix: http://betamode.de/kategorie/projekte/pingfix/

Direkte Korrektur: Version 0.4a

Nach einem Hinweis von Frank Bültge ist mir aufgefallen, dass ich PingFix gar nicht auf Kompatibilität mit WordPress 1.5.x getestet hatte. Tatsächlich nutzte eine Unterfunktion erst ab WordPress 2.0.x verfügbare Funktionen – deshalb habe ich gleich eine korrigierte Version 0.4a hinterhergeschoben. Jetzt müsste es auch mit der alten WordPress-Version funktionieren.

Aktuelle Version

Die hier besprochenen Versionen von Pingfix sind nicht mehr aktuell. Aktuelles zu Pingfix findet sich in der Projektkategorie Pingfix.

Firefox: Long Titles

Published 2006-08-30, 19:04

https://addons.mozilla.org/firefox/1715/:

Due to Mozilla bug 45375, long tooltips are broken with „…“. This is especially annoying if these tooltips contain useful or important informations. Long Titles shows non-cropped tooltips for the title attributes.

Braucht man wegen dieser Seite. Wirklich.

Linksammlung PHP-Anwendungen optimieren

Published 2006-08-28, 03:06

http://benchmark.nophia.de/
http://www.thegeek.de/blog/index.php?type=archiv&post=200412
http://blog.antikoerperchen.de/beitrag/57/tra…en-website-geschwindigkeit-steigern.html
http://phplens.com/lens/php-book/optimizing-debugging-php.php
http://phplens.com/phpeverywhere/node/view/52
http://www.blueshoes.org/en/developer/php_bench/
http://www.fudnik.com/main/tiki-view_for…orumId=1&comments_parentId=2
http://www.phpbar.de/w/Referenz

Mal wieder die Text-Dateien vom Desktop aufräumen :) Ergänzungen?

PHP: Achtung bei current(), next() und prev()

Published 2006-08-26, 15:52

Im Manual steht es groß und auffällig, trotzdem habe ich natürlich einige Zeit gebraucht bis ich auch die Idee kam dort nachzuschauen:

Enthält das Array leere Elemente (0 oder „“, den leeren String), wird für diese ebenfalls ein Wert zurückgegeben, der als FALSE ausgewertet wird (siehe Umwandlung nach boolean und die Typvergleichs-Tabelle für zusätzliche Informationen). Das macht es unmöglich, unter Verwendung von current() herauszufinden, ob das wirklich am Ende der Liste sind. Um ein Array, das leere Elemente enthalten könnte richtig durchzugehen, verwenden Sie die Funktion each().

Also merken: current(), next() und prev() sind böse.

XAMPP / Mercury: 553 We do not relay non-local mail, sorry.

Published 2006-08-25, 23:13

Wer direkt mit dem bei XAMPP mitgelieferten Mailserver herumspielen möchte (XAMPP starten, Mercury starten, Mails mit Absender foo@example.org versenden) bekommt direkt mal folgenden Fehler geliefert:

553 We do not relay non-local mail, sorry.

Doch der lässt sich einfach beheben:
Configuration -> Connection Control -> Haken bei „Do not permit SMTP relaying of non-local mail“ wegmachen.

Wichtig: Nach dem Testen Mercury entweder wieder umstellen oder beenden – mit dieser Einstellung wird der eigene Rechner sonst schnell zur unkontrollierten Spamschleuder.

MySQL: Zeichensatzärger

Published 2006-08-25, 16:21

Im Juli habe ich mit meinem Beitrag latin1_german1_ci oder latin1_german2_ci? kurz das Thema Kollationen angeschnitten. Kris Köhntopp hat den ganzen Zeichensatzkram etwas ausführlicher erklärt:

http://blog.koehntopp.de/archives/1360-Zeichensatzaerger.html

Mögliche Alternative zu in_array bei großen Arrays

Published 2006-08-21, 02:03

http://de2.php.net/manual/de/function.in-array.php#60559

[…]

The non technical explanation is before is you had 100 items and it took you 100 microseconds for in_array with 10 000 items it would take you 10 000 microseconds. while with the second one it would still take you 100 microsecond if you have 100 , 10 000 or 1 000 000 ids.

(the 100 microsecond is just a number pulled out of thin air used to compare and not an actual time it may take)

Beliebte mod_rewrite-Fehler

Published 2006-08-19, 18:21

Unter den Rewriteflags werden in der Dokumentation zu mod_rewrite 4 wichtige Punkte angesprochen. Dummerweise werden diese durch die blaue Box nicht etwa hervorgehoben, sondern rücken eher in den Hintergrund.

Dies ist schade, denn würde jeder Webmaster der mit mod_rewrite herumspielt diese Regeln durchlesen, gäbe es viel weniger Missverständnisse und Verwirrung was die Funktionsweise der RewriteRules angeht. Deshalb hier nochmal:

Note: Enabling rewrites in per-directory context

To enable the rewriting engine for per-directory configuration files, you need to set „RewriteEngine On“ in these files and „Options FollowSymLinks“ must be enabled. If your administrator has disabled override of FollowSymLinks for a user’s directory, then you cannot use the rewriting engine. This restriction is needed for security reasons.

Ganz beliebter Fehler Nutzung von mod_rewrite bei Hostern wie Hosteurope.

Note: Pattern matching in per-directory context

Never forget that Pattern is applied to a complete URL in per-server configuration files. However, in per-directory configuration files, the per-directory prefix (which always is the same for a specific directory) is automatically removed for the pattern matching and automatically added after the substitution has been done. This feature is essential for many sorts of rewriting – without this, you would always have to match the parent directory which is not always possible.

There is one exception: If a substitution string starts with „http://“, then the directory prefix will not be added, and an external redirect or proxy throughput (if flag P is used) is forced!

Wenn man das einmal verstanden hat, werden die Regeln viel klarer.

Note: Substitution of Absolute URLs

When you prefix a substitution field with http://thishost----escape_autolink_uri:ec32f0e44735807244628322d406ebe5----, mod_rewrite will automatically strip that out. This auto-reduction on URLs with an implicit external redirect is most useful in combination with a mapping-function which generates the hostname part.

Remember: An unconditional external redirect to your own server will not work with the prefix http://thishost because of this feature. To achieve such a self-redirect, you have to use the R-flag.

Das versteh ich ehrlich gesagt selbst nich ;)

Note: Query String

The Pattern will not be matched against the query string. Instead, you must use a RewriteCond with the %{QUERY_STRING} variable. You can, however, create URLs in the substitution string, containing a query string part. Simply use a question mark inside the substitution string, to indicate that the following text should be re-injected into the query string. When you want to erase an existing query string, end the substitution string with just a question mark. To combine a new query string with an old one, use the [QSA] flag.

Probleme mit Queries gehören nach Verstehen dieses Absatzes zum Glück auch der Vergangenheit an.

18 queries. 0,216 seconds.