php - 将 unicode 输入与数据库字符串进行比较

标签 php mysql html utf-8 encode

我一直在 stackover 中一遍又一遍地搜索,但没有找到解决我的问题的方法。 我需要将用户输入的字符串与 mysql 数据库中的现有字符串进行比较。 数据库中存储的字符串如下: xuất khẩu 意思是:“xuất khẩu”:)

用户从文本框中输入的字符串是:“xuất khẩu”

但是当我尝试比较 2 个字符串、mb_encode、htmlentities 等时。但它绝不表示字符串匹配!

数据库使用utf-8通用ci,网站正确显示utf8字体。

谁能给我解决这个问题吗?

最佳答案

在比较使用时请确保:

html_entity_decode($mysqlValue, ENT_QUOTES, 'UTF-8'); // Compare with the unprocessed user input.

(这会将 HTML 实体中的 DB 值解码为特殊字符。)

或者:

htmlentities($userInput, ENT_QUOTES, 'UTF-8'); // Compare with the unprocessed DB value.

(这会将用户的输入从包含特殊字符的字符串编码为包含 HTML 实体的字符串。)

数据库中的文本是 HTML 实体,所以我会寻找基于此的解决方案。我怀疑 UTF-8 编码是问题所在,但最好在函数中指定以防万一。

关于php - 将 unicode 输入与数据库字符串进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11556200/

相关文章:

php - 如何减少安全模式下的 PHP 时间限制?

php - 如何寻址 "Refused to Set Unsafe Header: Connection"?

php - 获取 MySQL 表中每个类别的行数

php - 在给定秒数内刷新ajax代码

MySQL表同步

php - Doctrine HYDRATE_ARRAY 有什么方法可以保留数据类型?

mysql - 货币兑换数据库模式

javascript - HTML 中的 AJAX POST 方法

php - HTML 表单未将值传递给 PHP (mysqli_real_escape_string)

html - 如何消除具有相同背景颜色的三个 div 之间的奇怪间隙?