HTML编码与PHP

HTML编码与PHP,php,html,encoding,Php,Html,Encoding,您好,我使用php,我需要比较数组中的数据和读取的验证码中的数据。但我对html编码有问题。我的阵列中的示例: "osiemnaście" => 18, 和验证码中的数据: osiemnaście 如何比较这些数据?我已经尝试过“html\u entity\u decode()”,但没有结果。您可以选择另一种方式: htmlentities("osiemnaście") == $captchainput 您必须关心来自htmldocument的文件和输入编码 您

您好,我使用php,我需要比较数组中的数据和读取的验证码中的数据。但我对html编码有问题。我的阵列中的示例:

"osiemnaście" => 18,
和验证码中的数据:

osiemnaście

如何比较这些数据?我已经尝试过“html\u entity\u decode()”,但没有结果。

您可以选择另一种方式:

htmlentities("osiemnaście") == $captchainput
您必须关心来自htmldocument的文件和输入编码

您可以使用php定义documentencoding:

header('Content-Type: text/html; charset=utf-8');

或者在html中:

看起来像是带有重音“s”字符的字符集/编码问题。确保在服务器和HTML端都设置了UTF-8


我已经有一段时间没有使用过很多PHP了,但是这个函数可能很有用:

为了解码十六进制实体,您必须稍微使用它,因为PHP内置函数不包含这些

$string = "osiemnaście";
$string = preg_replace('/\&\#x([a-fA-F0-9]+)\;/me', 'mb_convert_encoding("&#".hexdec("\\1").";", "UTF-8", "HTML-ENTITIES")', $string);

// $string is now  "osiemnaście"

echo ($string == "osiemnaście")
   ? "success"
   : "failure";

考虑不要为CAPTCHA使用重音字符,这些东西可能已经足够混淆了,而不必知道随机的飞点是文本的一部分。在PrggRead之前:“Pi&OxX0119;and X0107;”之后,“PiWar,在一些研究之后,看起来实体实际上是UndoCube(U+XXXX)。但显示为十六进制。我已更新了将unicode转换为html编码的替代方法。请立即尝试我的答案。@user2796493抱歉!我忘了从编码实体中删除“x”!现在它应该可以正常工作了,已经过测试了!谢谢,你是我的英雄!:D