如何从UTF-8字符串中删除?

时间:2015-02-24 19:29:26

标签: php utf-8 html-entities

我的数据库正在返回一些字符串,如:

This is a string

当字符串足够长并且您设置了最大宽度时,这是一个问题:

<p style="width:50px">This&nbsp;is&nbsp;a&nbsp;string</p>

为了搭乘&nbsp;个实体,我尝试使用以下过滤器而未成功:

$new = preg_replace("/&nbsp;/i", " ", $str);
$new = str_replace('&nbsp;', ' ', $str);
$new = html_entity_decode($str);

你有一个PHP fiddle to see this in action(我必须在数据库输出中用十六进制编码字符串;字符串是西班牙语,对不起)。

如何处理?为什么html_entity_decode()无效?那么替换功能呢?感谢。

3 个答案:

答案 0 :(得分:11)

这很棘手,它不像更换普通字符串那么直接。

试试这个。

 str_replace("\xc2\xa0",' ',$str); 

或者这个,上面应该有效:

$nbsp = html_entity_decode("&nbsp;");
$s = html_entity_decode("[&nbsp;]");
$s = str_replace($nbsp, " ", $s);
echo $s;

@ref:https://moovwebconfluence.atlassian.net/wiki/pages/viewpage.action?pageId=1081435

答案 1 :(得分:0)

让html实体替换您想要的实体,然后解码回去:

$str = str_replace('&nbsp;', ' ', htmlentities($new));
$new = html_entity_decode($str);

答案 2 :(得分:-2)

我认为strip_tags($string)会为你完成这项工作。此函数用于删除html和php标记。