Подтвердить что ты не робот

Заменяет ли html_entity_decode также? Если нет, то как его заменить?

У меня есть ситуация, когда я передаю строку функции. Я хочу преобразовать   в "" (пробел), прежде чем передавать его функции. Это делает html_entity_decode?

Если не так, как это сделать?

Я знаю str_replace, но есть ли другой выход?

4b9b3361

Ответ 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('>&nbsp;<');
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 преобразует &nbsp; в пробел, просто не "простой" (ASCII 32), а неразрывное пространство (ASCII 160) (так как это определение &nbsp;).

Если вам нужно преобразовать в ASCII 32, вам все равно потребуется str_replace() или, в зависимости от вашей ситуации, preg_match("/s+", ' ', $string), чтобы преобразовать все типы пробелов в простые пробелы.