Encoding symfony 1.4中的奇怪输出转义

Encoding symfony 1.4中的奇怪输出转义,encoding,symfony1,escaping,Encoding,Symfony1,Escaping,我的代码中有以下行: mb_substr(strip_tags($comm->getRawValue()->comment),0,30,'UTF-8') 这允许我只显示注释的前30个字符 但当注释在该字符串位置包含重音时 输出为: "Ah non, on ne peut pas int&eac" html实体被剪切 这里奇怪的行为是,如果我把绳子剪离 开始时,它将显示为: "Ah non, on ne peut pas intég" 没有html实体,只有字

我的代码中有以下行:

  mb_substr(strip_tags($comm->getRawValue()->comment),0,30,'UTF-8')
这允许我只显示注释的前30个字符

但当注释在该字符串位置包含重音时 输出为:

  "Ah non, on ne peut pas int&eac"
html实体被剪切

这里奇怪的行为是,如果我把绳子剪离 开始时,它将显示为:

  "Ah non, on ne peut pas intég"
没有html实体,只有字符“é”

发生了什么事

PS_u我尝试添加一个html_entity_decode(),但这会将重音转换为问号。

明白了! 我不得不在html实体解码中添加“UTF-8”:

truncate_text(html_entity_decode(strip_tags($comm->getRawValue()->comment),null,'UTF-8'),40, '…');

底层“comment”字符串中有什么?是
é实体实际存储在
注释
中,作为
é?(顺便说一句,在这里使用mb_substr很好,但是在将来,如果您以前没有遇到过它,您可能会发现Symfony的truncate_text()很有用…)哦。根据phpmyadmin的说法,该实体在数据库中:“啊,不,在nepeut pas inté;grer上”。一定是TinyMCE在做。truncate_text()UTF-8是否知道?与以下行为相同:
truncate_text(html_entity_decode(strip_标记($comm->getRawValue()->comment)),36'…')
似乎合理。不过,如果您能够管理它,那么最好首先避免将HTML实体放入数据库中。如果你有真正的
字符和
é
实体,在某个时候会让人恼火。