Moin!
Mit PHP 6 wird aber afaik dieser Fehler korrigiert und die betreffenden Funktionen, die jetzt eine mb_-Variante haben, werden Multibyte-Safe.
PHP 6 ist gerade wieder ganz heftig im Umbruch. Das Entwicklerteam hat nach einer längeren Zeit des Stillstands und der Tendenz, noch mal eine Version 5.4 anzugehen, offenbar die Entscheidung getroffen, die Unicode-Fähigkeiten komplett anders zu realisieren, als bislang getan.
Heißt also: Alle Vermutungen und Hinweise, die bislang für PHP 6 galten, dürften eventuell obsolet werden.
Man darf sich also auf _keinen Fall_ darauf verlassen, dass strlen() die Anzahl der Bytes in einem geegebenen String zählt bzw. dass das immer so bleiben wird.
Doch, ich glaube schon, dass man sich darauf verlassen könnte. Alle derzeitigen PHP-Versionen (3, 4, 5) machen das so, für korrektes Multibyte-Handling existiert mb_strlen(). Das Funktions-Overloading, was die Extension anbietet, würde zwar grundsätzlich strlen() auf mb_strlen() mappen und somit echte Zeichen, und nicht Bytes, zählen, aber die Praxistauglichkeit dieses Overloadings ist dann doch eher kritisch zu betrachten. Man kann nicht Code, der sich um Multibyte-Encodings nicht schert, einfach durch Überladen von Stringfunktionen multibyte-fähig machen - das funktioniert nur eventuell, nicht aber garantiert.
- Sven Rautenberg