У меня есть переменная PHP, которая содержит строку, которая представляет структуру XML. Эта строка содержит илегальные символы, которые не позволяют мне создавать новый объект SimpleXMLElement из строки. У меня нет способа попросить источник содержимого изменить их ответ, поэтому мне нужно выполнить некоторую очистку в этой строке, прежде чем я создам объект SimpleXMLElement.
Я считаю, что характер, вызывающий проблему, – это & # x0; (0x00 (00) HEX), и он находится в одном из текстовых узлов этой строки XML.
Каким образом можно удалить этот символ или другие символы, которые могут сломать объект SimpleXMLElement.
$text = str_replace("\0", "", $text);
заменит все нулевые символы в $text
строке $text
. Вы также можете предоставить массивы для первых двух аргументов, если вы хотите сделать несколько замен.
trim () также удалит нулевые символы с любого конца строки источника (но не внутри).
$text = trim($text);
Я нашел это полезным для связи сокета-сервера, особенно при передаче JSON вокруг, поскольку нулевой символ вызывает json_decode () для возврата null.
Хотя это, вероятно, не главная цель вашего вопроса, пожалуйста, посмотрите на функции фильтра PHP: http://www.php.net/manual/en/intro.filter.php
Функции фильтра проверяют и дезактивируют значения. Создайте сайт PHP:
$a = 'joe@example.org'; $b = 'bogus - at - example dot org'; $c = '(bogus@example.org)'; $sanitized_a = filter_var($a, FILTER_SANITIZE_EMAIL); if (filter_var($sanitized_a, FILTER_VALIDATE_EMAIL)) { echo "This (a) sanitized email address is considered valid.\n"; } $sanitized_b = filter_var($b, FILTER_SANITIZE_EMAIL); if (filter_var($sanitized_b, FILTER_VALIDATE_EMAIL)) { echo "This sanitized email address is considered valid."; } else { echo "This (b) sanitized email address is considered invalid.\n"; } $sanitized_c = filter_var($c, FILTER_SANITIZE_EMAIL); if (filter_var($sanitized_c, FILTER_VALIDATE_EMAIL)) { echo "This (c) sanitized email address is considered valid.\n"; echo "Before: $c\n"; echo "After: $sanitized_c\n"; }
Результат:
Этот (а) дезинфицированный адрес электронной почты считается действительным.
Этот (b) дезинфицированный адрес электронной почты считается недействительным .
Этот (C) дезинфицированный адрес электронной почты считается действительным.
До: (bogus@example.org)
После: bogus@example.org