I have a situation where I am passing a string to a function. I want to convert to " " (a blank space) before passing it to function. Does html_entity_decode does it?
If not how to do开发者_如何学运维 it?
I am aware of str_replace but is there any other way out?
Quote from html_entity_decode() manual:
You might wonder why
trim(html_entity_decode(' '));doesn't reduce the string to an empty string, that's because the' 'entity is not ASCII code 32 (which is stripped by trim()) but ASCII code 160 (0xa0) in the default ISO 8859-1 characterset.
You can use str_replace() to replace the ascii character #160 to a space:
<?php
$a = html_entity_decode('> <');
echo 'before ' . $a . PHP_EOL;
$a = str_replace("\xA0", ' ', $a);
echo ' after ' . $a . PHP_EOL;
html_entity_decode does convert to a space, just not a "simple" one (ASCII 32), but a non-breaking space (ASCII 160) (as this is the definition of ).
If you need to convert to ASCII 32, you still need a str_replace(), or, depending on your situation, a preg_match("/s+", ' ', $string) to convert all kinds of whitespace to simple spaces.
YES
See PHP manual http://php.net/manual/en/function.html-entity-decode.php.
Carefully read the Notes, maybe that s the issue you are facing:
You might wonder why trim(html_entity_decode(' ')); doesn't reduce the string to an empty string, that's because the ' ' entity is not ASCII code 32 (which is stripped by trim()) but ASCII code 160 (0xa0) in the default ISO 8859-1 characterset.
Not sure if it is a viable solution for most cases but I used trim(strip_tags(html_entity_decode(htmlspecialchars_decode($html), ENT_QUOTES, 'UTF-8')));in my most recent application. The addition of htmlspecialchars_decode() initially was the only thing that would actually strip them.
加载中,请稍侯......
精彩评论