The iconv function sometimes gives me an error:
Notice:
iconv() [function.iconv]:
Detected an incomplete multibyte character in input string in [...]
Is there a way to detect that there are illegal characters in a UTF-8 string before sending data to inconv()?
First, note that it is not possible to detect whether text belongs to a specific undesired encoding. You can only check whether a string is valid in a given encoding.
You can make use of the UTF-8 validity check that is available in
preg_match[PHP Manual] since PHP 4.3.5. It will return0(with no additional information) if an invalid string is given:Another possibility is
mb_check_encoding[PHP Manual]:Another function you can use is
mb_detect_encoding[PHP Manual]:It’s important to set the
strictparameter totrue.Additionally,
iconv[PHP Manual] allows you to change/drop invalid sequences on the fly. (However, ificonvencounters such a sequence, it generates a notification; this behavior cannot be changed.)You can use
@and check the length of the return string:Check the examples on the
iconvmanual page as well.