Tach!
Problematisch wird es, wenn die Zeichenkette auch chinesische Schriftzeichen enthält bspw. 测试汉语, da diese als Steuerzeichen erkennt werden.
Kann es vielleicht sein, dass du nicht darauf achtest, mit welcher Zeichenkodierung du arbeitest? Ich sehe keinen Modifier, der die RegExp-Maschine in den UTF-8-Modus schaltet. In welcher Kodierung liegen denn die chinesischen Zeichen vor? PHP nimmt ohne besondere Maßnahmen an, dass es mit ISO-8859-1 zu tun hat.
Was muss ich mir unter einem nicht-druckbaren Zeichen vorstellen mit Hinblick auf die genannte Zeichenfolge?
Wenn du mit PHP zu tun hat, solltest du in die PHP-Dokumentation schauen und nicht in die von Oracle. Nicht druckbare Zeichen sind je nach Zeichenkodierung andere. In ASCII-kompatiblen Zeichensätzen sind das die Zeichen unterhalb von Codepoint 32.
Wie könnte ein Ausdruck aussehen, der weniger aggressiv bzgl. chinesischer Zeichen ist aber gleichzeitig nicht-druckbare Zeichen detektiert?
Die Funktion wird in den UTF-8-Modus geschaltet, bekommt UTF-8-kodierte Werte übergeben und das Muster verwendet nicht Posix-kompatible Zeichenklassen sondern die Unicode character properties.
dedlfix.