Regex para detectar la cadena UTF-8 no válida

En PHP, podemos usarmb_check_encoding() para determinar si una cadena es válida UTF-8. Pero esa no es una solución portátil, ya que requiere que la extensión mbstring esté compilada y habilitada. Además, no nos lo dirá.cual el carácter no es válido.

¿Existe una expresión regular (u otro método 100% portátil) que pueda coincidir con los bytes UTF-8 no válidos en una cadena dada? De esa manera, esos bytes se pueden reemplazar si es necesario (mantener la información binaria, como cuando se crea un archivo xml de salida de prueba que incluye datos binarios). Así que convertir los caracteres a UTF-8 perdería información. Por lo tanto, podemos querer convertir:

"foo" . chr(128) . chr(255)

Dentro

"foo<128><255>"

Así que simplemente "detectando" que la cadena no es lo suficientemente buena, deberíamos poder detectar qué caracteres no son válidos.

Respuestas a la pregunta(3)

Su respuesta a la pregunta