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