【问题标题】:is there are any functional way to filter a person's name in PHP是否有任何功能性方法可以在 PHP 中过滤人名
【发布时间】:2013-09-24 00:24:28
【问题描述】:

如果有人提交“Jame c+@risti”(不是真实姓名),它将返回 false。 那里有很多符号字符,需要很长时间才能手动过滤。 我也想传递拉丁文、中文、孟加拉文等大陆语言字符...但想拒绝那些非法的名字(例如:+↙▶ⓚ!♥等)

【问题讨论】:

  • 是的,一定有办法。到目前为止,您尝试过什么?
  • 我只是过滤了 ascii 符号和数字,但不能超出 ascii
  • 谁说♥是非法姓名字符?
  • 我认为这个世界上没有人在他/她的出生证明中注册了他/她的名字中包含♥的......(-_-)
  • @AritraHazra 但很多人都希望:)

标签: php string filtering


【解决方案1】:

确定哪些是有效名称,哪些不是有效名称非常困难。

如果在Falsehoods Programmers Believe About Names中有详细说明。

简而言之,您可以简单地扫描非法字符。例如

<?php
function isValidName($name) {
  $illegals = array("+", "↙", "▶", "ⓚ", "!", "♥");
  foreach ($illegals as $illegal) {
    if (strpos($name, $illegal)) { return false; }
  }
  return true;
}

这是非常低效的,您应该允许大多数任何东西作为名称。特别是考虑到您希望在名称中接受中文和其他非 ascii 字符。众所周知,PHP 对多字节符文的支持很差,所以这本身就是另一个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-05
    • 1970-01-01
    • 2020-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多