Saya tidak melihat sesuatu yang ilegal - ada saran tentang apa yang mungkin menjadi masalah?
if (strtolower($matches[1]) != 'utf-8') {
var_dump($matches[1]);
$xml = iconv($matches[1], 'utf-8', $xml);
$xml = str_replace('encoding="'.$matches[1].'"', 'encoding="utf-8"', $xml);
}
Di bawah ini adalah debug/error saya
string(12) "windows-1252"
Notice (8): iconv() [http://php.net/function.iconv]: Detected an illegal character in input string [APP/models/sob_form.php, line 16]
Saya telah memverifikasi bahwa kode di atas memang baris 16
Namun, jika Anda menggunakan jawaban yang diterima, Anda masih akan menerima Pemberitahuan PHP jika karakter dalam string input Anda tidak dapat ditransliterasi:
<?php
$cp1252 = '';
for ($i = 128; $i < 256; $i++) {
$cp1252 .= chr($i);
}
echo iconv("cp1252", "utf-8//TRANSLIT", $cp1252);
PHP Notice: iconv(): Detected an illegal character in input string in CP1252.php on line 8
Notice: iconv(): Detected an illegal character in input string in CP1252.php on line 8
Jadi, Anda harus menggunakan IGNORE, yang akan mengabaikan apa yang tidak dapat ditransliterasi:
echo iconv("cp1252", "utf-8//IGNORE", $cp1252);