Заменяет ли html_entity_decode также? Если нет, то как его заменить?
У меня есть ситуация, когда я передаю строку функции. Я хочу преобразовать
в "" (пробел), прежде чем передавать его функции. Это делает html_entity_decode
?
Если не так, как это сделать?
Я знаю str_replace
, но есть ли другой выход?
Ответы
Ответ 1
Цитата из html_entity_decode()
руководство:
Вы можете удивиться, почему trim(html_entity_decode(' '));
не уменьшает строку до пустого string, потому что ' '
объект не является кодом ASCII 32 (который является снято с помощью trim()), но код ASCII 160 (0xa0) в стандарте ISO 8859-1 по умолчанию CharacterSet.
Вы можете использовать str_replace()
для замены символа ascii # 160 на пробел:
<?php
$a = html_entity_decode('> <');
echo 'before ' . $a . PHP_EOL;
$a = str_replace("\xA0", ' ', $a);
echo ' after ' . $a . PHP_EOL;
Ответ 2
ДА
См. руководство по PHP http://php.net/manual/en/function.html-entity-decode.php.
Внимательно прочитайте Примечания, возможно, это проблема, с которой вы сталкиваетесь:
Вы можете задаться вопросом, почему trim (html_entity_decode (' ')); не уменьшает строку до пустой строки, что, поскольку ' ' объект не является кодом ASCII 32 (который разделяется с помощью trim()), но код ASCII 160 (0xa0) в стандартном наборе символов ISO 8859-1 по умолчанию.
Ответ 3
html_entity_decode преобразует
в пробел, просто не "простой" (ASCII 32), а неразрывное пространство (ASCII 160) (так как это определение
).
Если вам нужно преобразовать в ASCII 32, вам все равно потребуется str_replace()
или, в зависимости от вашей ситуации, preg_match("/s+", ' ', $string)
, чтобы преобразовать все типы пробелов в простые пробелы.