Moin!
Wenn man davon ausgehen kann, dass Du nicht verschiedene Kodierungen innerhalb eines Strings benutzt hast (mit ziemlicher Sicherheit, denn sonst wäre der ganze String unbrauchbar), müsstest Du utf-8-Strings mit folgendem PCRE-Muster erkennen können:
Mit dem regulären Ausdruck erkennt man, ob der String gültiges UTF-8 ist, oder nicht. Aber man erkennt nicht, ob nicht zufällig eine andere Codierung (z.B. ISO-8859-1) so dumm angeordnet ist, dass es auch gültiges UTF-8 ist, aber deswegen ein Zeichen codiert wird, was im Endeffekt als Kästchen oder Fragezeichen wieder herauskommt.
Mit anderen Worten: Damit werden nur die Stellen gefunden, die im Sinne von UTF-8 böse sind, aber nicht die Stellen, die im Sinne von UTF-8 absolut in Ordnung sind, aber aus Textsicht fehlerhaft.
- Sven Rautenberg