【问题标题】:How do I best remove all invalid non name characters in PHP (for any common language)?如何最好地删除 PHP 中所有无效的非名称字符(对于任何通用语言)?
【发布时间】:2014-01-21 17:01:14
【问题描述】:

我不仅要验证它是否是正确的名称,还要删除任何不属于的字符。我知道 preg_replace 是我正在寻找的,但是测试英语、拉丁语、亚洲语和其他语言的正则表达式是什么?

我的数据库将 utf_general_ui 用于文本字段,但我想删除名称中未使用的内容(如大多数特殊字符)。

例子:

はやお みやざき

小迈克尔·奥杜尔

Eiður Smári Guðjohnsen

【问题讨论】:

  • 这个任务是不可能的。您想如何确定“名称”中哪些字符是“有效”的?作为一般经验法则:尽量不要“增强”用户输入的数据。通常,用户可能比您猜测更了解他的名字。
  • 我想删除无效字符。我不明白这是一件坏事。如果没有人知道更好的方法,我想我可以选择更常见的特殊字符。
  • 我重复这个问题:什么是“有效”/“无效”字符?
  • 名称中不使用数字。从 1 到 9 的大多数特殊字符都不是
  • 当然,这是一个选项。但正如所说:要非常小心考虑“无效”的内容,否则您可能会通过更改用户名来挫败用户......通常所做的是去除所有 空格字符(修剪),就是这样。因为通常用户在输入姓名时输入错误时会看到自己。

标签: php validation


【解决方案1】:

这是我的检查解决方案,但我不知道如何删除错误的字符:

<?php

    function valid($value)
    {
        return (strlen(preg_replace('/\p{L}|[., \' ]/u',"",$value)) == 0);
    }

    function showBoolean($bool)
    {
        if($bool)
        {
         echo "true";
         }
        else
        {
         echo "false";
         }
    }

    showBoolean(valid("やお みやざき"));
    showBoolean(valid("Michael O'Doul, Jr."));
    showBoolean(valid("Eiður Smári Guðjohnsen"));
    showBoolean(valid("やお みやざき ?$"));
    showBoolean(valid("Michael O'Doul, Jr. %$"));
    showBoolean(valid("Eiður Smári Guðjohnsen \""));

?> 

结果:

true
true
true
false
false
false

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-19
    • 1970-01-01
    • 2017-01-25
    • 2014-07-18
    • 2022-11-23
    • 2014-08-28
    • 2017-12-10
    • 2011-10-19
    相关资源
    最近更新 更多