首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >preg_match忽略允许的字符

问preg_match忽略允许的字符
EN

Stack Overflow用户
提问于 2014-07-01 15:19:26
回答 1查看 164关注 0票数 2

我有以下用utf8编码的源代码:

  1. PHP脚本
  2. MySQL DB连接
  3. MySQL表和字段
  4. HTML文件

为什么是以下代码:

代码语言:javascript
复制
preg_match("@^[0-9A-ZĄąĆćĘꣳÓ󯿏źŃńŚś\-\.\, ]{3,35}$@i", $valuesId)

允许像płatność,nieudana proba这样的单词和表达方式,但不允许简单的表达式nieudana próba?奥斯卡的角色似乎有一个问题,preg_match不想通过。我可以继续使用像ćoba或rćoba这样的词,但是próba是行不通的。

如果与ł,ś和ć一起允许的话,为什么会出现这种情况呢?

EN

回答 1

Stack Overflow用户

发布于 2014-07-01 21:35:24

TL; MySQL utf8编码被错误命名。

我测试了您的代码,它与作为示例提供的所有表达式相匹配。演示。我强烈怀疑MySQL存在编码问题。

最佳选择:您确实需要强制MySQL使用utf8mb4编码,而不是utf8编码。关于这一点的一个好的、完整的解释和教程是可用的本文作者是Mathias Bynens。要点:

  • 在做其他事情之前备份你的数据库!
  • 您需要修改数据库、表和文本列,方法是将每个数据库、每个表和每个文本列的CHARACTER SET设置为utf8mb4,将COLLATE设置为utf8mb4_unicode_ci。
  • utf8mb4每个字符使用额外的字节,因此您可能需要更改列和索引键的最大长度。
  • 将所有连接、客户端和服务器字符集从utf8更改为utf8mb4
  • 为安全起见,修理和优化所有表。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24513839

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档