PHP: Tagcloud? Wortwolke!

Published 2006-09-06, 14:31

Wikipedia: Wortwolke

Eine Wortwolke (englisch Tag cloud) ist die Methode zur Informationsvisualisierung bei der eine Wortliste zweidimensional alphabetisch sortiert angezeigt wird, wobei einzelne Worte unterschiedlich gewichtet größer oder auf andere Weise hervorgehoben dargestellt werden.

Wie generiere ich eine Tagcloud?

1. http://www.15tags.com/blog/tagcloud-demo-with-source/ besuchen
2. Sourcecode herunterladen und verstehen
3. Klasse mit Tags und Häufigkeit füttern
4. Fertig!

Wie verlinke ich nun die Tags mit den Tagseiten?

Übergebe der Klasse einfach direkt HTML-Code, der die Links schon enthält.

Statt

$tc_a_tags = array( 'some' => 1,
'random' => 4,
'tags' => 5,
'with' => 2,
'different' => 5,
'weight' => 3);

zum Beispiel einfach

$tc_a_tags = array(' <a href="tag/some">some</a>' => 1,
'<a href="tag/random">random</a> ' => 4,
'<a href="tag/tags">tags</a>' => 5,
'<a href="tag/with">with</a> ' => 2,
'<a href="tag/different">different</a> ' => 5,
'<a href="tag/weight">weight</a> ' => 3);

übergeben. So einfach.

Ist die Klasse von 15tags optimal?

Öhm keine Ahnung. Sie funktioniert und hilft zu verstehen, wie eine Tagcloud gebastelt wird. Um alles andere muss man sich dann schon selbst kümmern.

Weitere Links zum Thema

http://www.technologyevangelist.com/2006/03/how_to_make_a_tag_cl.html
http://www.codeprofessor.com/journal/2006/03/15/building-a-tag-cloud-in-wordpress/
http://w.astronote.jp/index.php?TagCloud.php
http://www.hawkee.com/snippet.php?snippet_id=1485

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.

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.

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)

Tools für reguläre Ausdrücke: The Regulator & Regulazy

Published 2006-07-28, 08:46

Keiner mag reguläre Ausdrücke. Deshalb gibt es auch so viele toole Tools, die helfen sollen sie zu verstehen, visualisieren oder zu erstellen. The Regex Coach von Edi Weitz nutze ich schon eine Zeit lang. 2 weitere sind mir gerade über den Weg gelaufen:

  1. The Regulator

    The Regulator is an advanced, free regular expressions testing and learning tool written by Roy Osherove. It allows you to build and verify a regular expression against any text input, file or web, and displays matching, splitting or replacement results within an easy to understand, hierarchical tree.

  2. Regulazy

    Regulazy is a visual Regex Creation tool for beginners. Easy point and click user interfaces, predictive technology and much more! Still in alpha, but more features are coming!

Beide sind übrigens von Roy Osherove und werden in nächster Zeit mal bei mir getestet.

PHP: Zeilennummer ausgeben mit __LINE__

Published 2006-07-21, 13:08

Ach, da code ich nun seit x Jahren mit PHP durch die Gegend und bin nie auf die Idee gekommen, mal zu schauen, ob denn die Zeilennummer, die gerade ausgeführt wird, ausgeben werden kann.

Heute hatte ich dann endlich diese Idee: http://de.php.net/constants.predefined

Das hat man nun vom „Learning by Doing“…

Häufige Fehlerquelle bei mysql_real_escape_string()

Published 2006-07-19, 23:16

mysql_real_escape_string() sollte ja auf jeden String angewendet werden, der in die Datenbank eingetragen wird. Mehrmals passierte es mir nun schon, dass ich auf neuen Servern nach der Ausführung eines Scriptes den Backslash auch in der Datenbank wiederfand. Grund:

Falls Sie magic_quotes_gpc aktiviert haben und mit Daten aus Benutzereingaben arbeiten, müssen Sie vorher Ihre Daten mit stripslashes() behandeln.

So einfach. Muss es mir nur merken. Und den Apache nach der Änderung neu starten.

18 queries. 0,195 seconds.