preg_match条件问题

发布于 2024-11-28 15:14:47 字数 252 浏览 0 评论 0原文

我不想检查字符串 ($nick_2) 是否有 " 或 ñ

这是正确的吗?我无法让它工作

if ( (strlen($nick_2) >= 3) && (strlen($nick_2) <= 25) && (!preg_match("/\"/", $nick_2)) && (!preg_match("/ñ/", strtolower($nick_2))) ) {

I wan't to check if a string ($nick_2) got " or ñ

Is this correct? i can't make it work

if ( (strlen($nick_2) >= 3) && (strlen($nick_2) <= 25) && (!preg_match("/\"/", $nick_2)) && (!preg_match("/ñ/", strtolower($nick_2))) ) {

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

幸福丶如此 2024-12-05 15:14:47

对于查找单个字符,正则表达式是巨大的杀伤力。只需使用

if ((strpos('"', $nick_2) !== FALSE) || (strpos('ñ', $nick_2) !== FALSE)) {
   ... chars were found
}

For finding single characters, regexes are massive overkill. Just use

if ((strpos('"', $nick_2) !== FALSE) || (strpos('ñ', $nick_2) !== FALSE)) {
   ... chars were found
}
听,心雨的声音 2024-12-05 15:14:47

您的字符串可能采用 UTF-8 格式,在这种情况下,您必须在 preg_match 中使用 u 修饰符,并且也应以 UTF-8 格式将表达式提交给该函数。

如果是这种情况,您还需要执行以下一些操作:

  • strtolowerstrlen 替换为 mb_ 替代方案。
  • 标准化输入。
  • 检查这些字符所在的字素是否没有更多代码点。

Possibly your string is in UTF-8, in which case, you must use the u modifier in preg_match and should submit your expression to that function also in UTF-8.

If that's the case, you will also want to do some of these things:

  • Replace strtolower and strlen with mb_ alternatives.
  • Normalize the input.
  • Check if the graphemes where those characters are don't have more code points.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文