Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php编码问题_Php_Encoding - Fatal编程技术网

php编码问题

php编码问题,php,encoding,Php,Encoding,我有用户输入,并使用htmlentities()转换所有实体。 然而,似乎有一些bug。当我打字的时候 ääää öööö üüüü ääää 我明白了 ääää ööö&Atil

我有用户输入,并使用htmlentities()转换所有实体。 然而,似乎有一些bug。当我打字的时候

ääää öööö üüüü ääää
我明白了

ääää öööö üüüü ääää
看起来像这样

Ã

我做错了什么?代码实际上只是这样:

$post=htmlentities($post);
编辑1

以下是我用于格式化目的的更多代码(其中包含一些有用的函数):

//使用htmlentities进行安全保护(mysql\u real\u escape\u string()稍后提供)
$post=htmlentities($post);
//删除过时的空白
$post=preg_replace(“/+/”,“,$post”);
//检测链接
$pattern_url='~(?>[a-z+]{2,}://www\)(?:[a-z0-9]+(?:\.[a-z0-9]+)?@)(?:(?:[a-z](?:[a-z0-9];(?\s*)+/“,
,$post); //使用mysql\u real\u escape\u string()进行安全保护 $post=mysql\u real\u escape\u字符串($post);
您必须手动指定以下各项的编码(
UTF-8
):

输出:

ääää öööö üüüü ääää

必须手动指定以下各项的编码(
UTF-8
):

输出:

ääää öööö üüüü ääää

htmlentities的第3个参数必须与使用post的字符集匹配,这一点很重要。我支持,您没有提交utf8,因为这是htmlentities中的默认值

在PHP中

 $post = htmlentities ( $post, ENT_COMPAT, 'ISO-8859-1')  // or whatever  
形式上

 <form action="your.php" accept-charset="ISO-8859-1">


无论如何,实际上我建议您使用utf8,htmlentities的第三个参数必须与使用post的字符集匹配。我相信,您没有提交utf8,因为这是HTMLenties中的默认值

在PHP中

 $post = htmlentities ( $post, ENT_COMPAT, 'ISO-8859-1')  // or whatever  
形式上

 <form action="your.php" accept-charset="ISO-8859-1">


不管怎样,实际上我建议你在说“真的只有这个”时使用utf8

你能分享它的其余部分吗?我看不出你的PHP有任何问题,所以问题可能出在其他地方。@stevether请查看编辑问题。当你说“真的只有这个”时“你能分享它的其余部分吗?我看不出你的PHP有任何问题,所以问题可能在其他地方。@stevether请查看编辑问题。谢谢!这就是我需要的。参数null是做什么的?你可能知道我为什么需要它吗?我通常只使用HtmlTities('string'))没有任何附加参数,它通常工作正常。它只是说对第二个参数使用默认值。参数2和3是可选的,但如果要指定第三个参数,则必须指定第二个。这相当于
htmlentities(“string”,ENT|COMPAT,ENT|HTML401,“UTF-8”)
谢谢!非常有魅力。谢谢!这就是我需要的。参数null是做什么的?你知道我为什么需要它吗?我通常只使用htmleties('string'))没有任何附加参数,它通常工作正常。它只是说对第二个参数使用默认值。args 2和3是可选的,但如果要指定第三个arg,则必须指定第二个。这相当于
htmlentities(“string”,ENT|COMPAT | ENT|HTML401,“UTF-8”)
谢谢!非常有用。