Php htmlentities的替代方案($string,entu替换)

Php htmlentities的替代方案($string,entu替换),php,special-characters,html-entities,Php,Special Characters,Html Entities,我问了一个有点愚蠢的问题 目前,我正在为一家公司制作一个网站,服务器上的PHP版本(5.2.17)有点过时。我有一个数据库,其中许多字段都是varchar,带有“äèè”等字符,我必须在HTML页面中显示这些字符 因此,由于PHP的版本已经过时(我不允许更新它,因为网站的某些部分必须继续工作,我没有权限编辑它们),我不能使用带有ENT_替换参数的htmlentities函数,因为它只是在版本5.4之后添加的 所以我的问题是: 是否有替代方案 htmlentities($string,entu替换

我问了一个有点愚蠢的问题

目前,我正在为一家公司制作一个网站,服务器上的PHP版本(5.2.17)有点过时。我有一个数据库,其中许多字段都是varchar,带有“äèè”等字符,我必须在HTML页面中显示这些字符

因此,由于PHP的版本已经过时(我不允许更新它,因为网站的某些部分必须继续工作,我没有权限编辑它们),我不能使用带有ENT_替换参数的htmlentities函数,因为它只是在版本5.4之后添加的

所以我的问题是:

是否有替代方案 htmlentities($string,entu替换)还是我必须编写一个函数 我自己有各种各样奇怪的角色,这些角色无论如何都是不完整的


如果编码处理正确,则不需要使用
ENT\u SUBSTITUTE


如果数据库中的字符是utf-8,存储在utf-8中,在utf-8中读取并以utf-8显示给用户,则应该没有问题。

定义一个用于处理格式错误的字节序列的函数,并在将字符串传递给htmlentties之前调用该函数。定义函数有多种方法

首先,如果不使用Windows,请尝试UConverter::transcode

如果您愿意直接处理字节,请参阅我前面的答案

最后一个选项是开发PHP扩展。多亏了php_next_utf8_char,这并不难。 下面是代码示例。“擦洗”这个名字来自Ruby 2.1(请参阅)

//头文件
//PHP_函数(utf8_);
#包括“ext/standard/html.h”
#包括“ext/standard/php\u smart\u str.h”
常量zend_函数输入utf8_字符串_函数[]={
PHP_FE(utf8_,空)
PHP_feu__END
};
PHP_函数(utf8_)
{
char*str=NULL;
int len,状态;
尺寸位置=0,旧位置;
无符号整数码_点;
smart_str buf={0};
if(zend_parse_参数(zend_NUM_ARGS()TSRMLS_CC,“s”、&str、&len)=失败){
返回;
}
while(pos
只需添加

if (!defined('ENT_SUBSTITUTE')) define('ENT_SUBSTITUTE', 0);

您可以将ENT_替换为html属性。

在我的html页面上,我可以看到如下字符���� 一直都是这样,所以我想一定是出了什么问题。你可能会找到一些关于如何正确设置的指南。我的用户编码为utf8($string),现在大部分显示正确,但一些字符消失了,这真的很奇怪。那些使用Windows-1251的人怎么办,因为他们在旧版网站中的旧版CMS使用它?当他们解析来自utf-8站点的数据并需要将Win-1251中缺少的每个符号转换为html实体时?必须在托管上处理php5.3吗?很抱歉,世界本身是完全不正确的。我会将网站改为使用Windows-1251编码,这似乎是最明智的。在数据库中使用重音字符本身并不需要使用
entu-SUBSTITUTE
。你有什么问题?!可能重复的,这有什么意义?这将简单地隐藏任何E_通知(由于未定义常数),实际上不会使其“工作”?!
if (!defined('ENT_SUBSTITUTE')) define('ENT_SUBSTITUTE', 0);