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实体放入数据库中。如果你有真正的字符和é
实体,在某个时候会让人恼火。