Php 避免在多字符HTML特殊字符中间剥离MbStruthWistHe()的最佳实践

Php 避免在多字符HTML特殊字符中间剥离MbStruthWistHe()的最佳实践,php,Php,我有一个在博客中被截断的标题字符串,通过PHP内置函数mb_strimwidth()总体上运行良好 然后突然,用户在相关网站上发布了一篇帖子,标题中包含了一个撇号 撇号被输出为',问题是在这个特殊示例中,标题字符串的字符长度正好位于这个7字符撇号特殊chr的中间 所以这个标题最终出现在网站上,就像 这是一个测试标题,向您展示撇号是如何被插入的 一半R 是否有一种策略可以在避免这种情况的同时仍然使用mb_strimwidth() 您的数据不包含实际的”,它包含实体字符串表示形式’。

我有一个在博客中被截断的标题字符串,通过PHP内置函数mb_strimwidth()总体上运行良好

然后突然,用户在相关网站上发布了一篇帖子,标题中包含了一个撇号

撇号被输出为',问题是在这个特殊示例中,标题字符串的字符长度正好位于这个7字符撇号特殊chr的中间

所以这个标题最终出现在网站上,就像

这是一个测试标题,向您展示撇号是如何被插入的 一半R


是否有一种策略可以在避免这种情况的同时仍然使用mb_strimwidth()

您的数据不包含实际的
,它包含实体字符串表示形式
。如果希望
mb_strimwidth()
关心它,则需要将其从实体表示转换回。或者,在理想情况下,首先采取措施确保源数据中没有意外的实体表示。[见:]

输出:

string(89) "This is a test title to show you how the apostrophe was being cut in half ’ oh noes"
string(78) "This is a test title to show you how the apostrophe was being cut in half &#82"
string(85) "This is a test title to show you how the apostrophe was being cut in half ’ oh noes"
string(80) "This is a test title to show you how the apostrophe was being cut in half ’ oh"
string(89) "This is a test title to show you how the apostrophe was being cut in half ’ oh noes"
string(78) "This is a test title to show you how the apostrophe was being cut in half &#82"
string(85) "This is a test title to show you how the apostrophe was being cut in half ’ oh noes"
string(80) "This is a test title to show you how the apostrophe was being cut in half ’ oh"