Вы можете использовать str_replace()
при условии, что строка действительна UTF-8.Обратите внимание, что str_replace()
будет работать с байтовыми смещениями, так что вы больше не имеете дело со строками PHP, а со строками байтов.
И есть минус: если ваша третья сторона включает в себя случайные пробелы и управляющие символы,в XML нет никакой цели, можно предположить, что они в конечном итоге сломают UTF-8.Таким образом, вы не можете использовать str_replace()
с уверенностью (только добросовестно), пока не убедитесь, что их текущий дамп дня не совсем бесполезен.
Возможно, вы могли бы взять ярлык и набить его вlibxml DOMDocument объект и подавление ошибок с помощью @, оставляя библиотеку libxml для обработки ошибок.Что-то вроде:
$doc = new DOMDocument();
if(@$doc->loadXML($raw_string)) {
// document is loaded. time to normalize() it.
}
else {
throw new Exception("This data is junk");
}