Regex para detectar uma string UTF-8 inválida

No PHP, podemos usarmb_check_encoding() para determinar se uma string é válida UTF-8. Mas essa não é uma solução portátil, pois requer que a extensão mbstring seja compilada e ativada. Além disso, não nos dizqual caractere é inválido.

Existe uma expressão regular (ou outro método 100% portátil) que pode corresponder a bytes UTF-8 inválidos em uma determinada string. Dessa forma, esses bytes podem ser substituídos, se necessário (mantendo as informações binárias, como ao criar um arquivo xml de saída de teste que inclua dados binários). Então, converter os caracteres para UTF-8 perderia informações. Então, podemos querer converter:

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

Para dentro

"foo<128><255>"

Então, apenas "detectando" que a string não é boa o suficiente, precisaríamos ser capazes de detectar quais caracteres são inválidos.

questionAnswers(3)

yourAnswerToTheQuestion