dedlfix: String in 180 Zeichen aufteilen und in Array packen. (Spezialfall Wörter)

Beitrag lesen

Tach!

mal angenommen, ich würde mit einem UTF-8 kodierten PHP Script arbeiten und darin schreiben:

echo wordwrap("Der Bär im Klärwerk trübt die Brühe", 20)."\n";
echo wordwrap("Der Bar im Klarwerk trübt die Brühe", 20)."\n";

echo substr("Ein Bär", 0, 6)."\n";
echo mb_substr("Ein Bär", 0, 6)."\n";

Fehler 1 ist, dass wordwrap im 1. Aufruf "Klärwerk" auf die 2. Zeile schiebt, obwohl es in Zeile 1 gepasst hätte.

Gut, kann man als Fehler ansehen. Das Ergebnis ist jedoch nur eine nicht optimale Nutzung des Platzes, aber kein K.O.-Kriterium.

Der 3. echo gibt "Ein B\xc3" aus statt "Ein Bä", weil dem ä (UTF-8 \xC3A4) die Hälfte abgeschnitten wird. Im 4. echo passiert das nicht.

Diese beiden Fälle sind zwar richtig, aber hier irrelevant. Jedenfalls nicht in dieser Form. Dazu .. siehe nächsten Abschnitt.

So. Und auf welchem Glatteis bin ich jetzt, nachdem Du mich so schön geführt hast?

Das Abschneiden überlanger Wörter war eher der Fall, an dem ich ein potentielles Problem gesehen habe. Aber auch nur dann, wenn man den Parameter $cut auf true setzt. Hat man das nicht, tritt kein Zerstückeln innerhalb von Bytesequenzen auf. Und da Wörter mit 180 Zeichen kaum verbreitet sind, wird $cut wohl auf false bleiben und keine derartigen Probleme verursachen. Das sehe ich jetzt also auch nicht aus Ausschlusskriterium an.

Bleibt lediglich ein Schönheitsfehler. Und wie wahrscheinlich ist, dass der deutlich auffällt? Kommt auf die Sprache des zu verarbeitenden Textes an und die Häufigkeit von Nicht-ASCII-Buchstaben in Wörtern.

dedlfix.