Code Monkey home page Code Monkey logo

Comments (4)

moustacheful avatar moustacheful commented on June 1, 2024 1

I agree this should be a different rule, since you might not want unicode characters on, say, a username.
I came up with this, which supports unicode letters (see http://php.net/manual/en/regexp.reference.unicode.php , http://stackoverflow.com/questions/8013897/accept-international-name-characters-in-regex).

It does support the characters - and ' -- for example: "O'Malley" or "Kennedy-Warburton"

Maybe we could remove those characters and add them optionally as a rule parameter, as this is more useful as a 'name' rule than alnum and alpha.

    require 'lib/Valitron/Validator.php';
    use Valitron\Validator as Validator;
    Valitron\Validator::addRule('alnum_unicode', function($field, $value, array $params) {
        return preg_match("/^[\s-'0-9\pL]+$/u",$value);;
    }, 'is not unicode alphanumeric.');
    Valitron\Validator::addRule('alpha_unicode', function($field, $value, array $params) {
        return preg_match("/^[\s-'\pL]+$/u",$value);;
    }, 'is not unicode alpha.');


    $arr = [
        "test_japanese" => "日本語",
        "test_russian" => "Россия",
        "test_spanish" => "España",
        "test_emoji" => "😅",
        "test_jp_alnum" => "日本語10"
    ];

    $v = new Validator($arr);
    $v->rule('alnum_unicode',array('test_japanese','test_russian','test_spanish','test_emoji','test_jp_alnum'));
    $v->rule('alpha_unicode',array('test_japanese','test_russian','test_spanish','test_emoji','test_jp_alnum'));
    $v->validate();
    var_dump($v->errors());

which prints the following

array(2) {
  ["test_emoji"]=>
  array(2) {
    [0]=>
    string(39) "Test Emoji is not unicode alphanumeric."
    [1]=>
    string(32) "Test Emoji is not unicode alpha."
  }
  ["test_jp_alnum"]=>
  array(1) {
    [0]=>
    string(35) "Test Jp Alnum is not unicode alpha."
  }
}

from valitron.

 avatar commented on June 1, 2024

áéíñ

This characters is not alphabetical (in english). It isn't bug.
You can add a rule to check this.

from valitron.

vlucas avatar vlucas commented on June 1, 2024

Thanks for reporting this. First, I would say that there is a spanish translation you can use to get spanish error messages (lang/es.php). Second, I would say that this is an interesting issue, because in spanish, those are certainly valid characters, and ones that I would want Valitron to support. I am also thinking that even for english input, someone could easily have an accent mark in their name, and I wouldn't want that to fail validation. Any thoughts on the best way forward here? I want to support this, but at the same time, we may need a new rule type like alpha_intl or something for international characters.

from valitron.

grrnikos avatar grrnikos commented on June 1, 2024

Same problem here for greek characters. Although @moustacheful gave a nice temporary fix, that I also use for now. Any planned update?

Another problem is that php counts 2 bytes for every greek or non-latin character, so e.g 'lengthMin', 2validates to true for the string "λ". It seems to work right when I use mb_internal_encoding("UTF-8");, but I don't know if that's the proper solution. Please help, thanks.

from valitron.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.