• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • Locale::lookup()

    locale_lookup

    (PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

    Searches the language tag list for the best match to the language

    说明

    面向对象风格
    publicstaticLocale::lookup(array $langtag,string $locale[,bool $canonicalize= FALSE[,string $default]]): string
    过程化风格
    locale_lookup(array $langtag,string $locale[,bool $canonicalize= FALSE[,string $default]]): string

    Searches the items in$langtagfor the best match to the language range specified in$localeaccording to RFC 4647's lookup algorithm.

    参数

    $langtag

    An array containing a list of language tags to compare to$locale. Maximum 100 items allowed.

    $locale

    The locale to use as the language range when matching.

    $canonicalize

    If true, the arguments will be converted to canonical form before matching.

    $default

    The locale to use if no match is found.

    返回值

    The closest matching language tag or default value.

    范例

    locale_lookup() example

    <?php
    $arr = array(
        'de-DEVA',
        'de-DE-1996',
        'de',
        'de-De'
    );
    echo locale_lookup($arr, 'de-DE-1996-x-prv1-prv2', true, 'en_US');
    ?>
    

    OO example

    <?php
    $arr = array(
        'de-DEVA',
        'de-DE-1996',
        'de',
        'de-De'
    );
    echo Locale::lookup($arr, 'de-DE-1996-x-prv1-prv2', true, 'en_US');
    ?>
    

    以上例程会输出:

    de_de_1996
    

    参见

    • locale_filter_matches() Checks if a language tag filter matches with locale
    It worth to note that if $langtag array is empty this function returns empty string and not $default . Use array(false) if your $langtag array is empty in order to get default locale.
    Note that this method does not understand "similar" languages, so the following:
      Locale::lookup(["en-US"], "en-GB", false);
    Or:
      Locale::lookup(["es-ES"], "es-CO", false);
    Does not work as you would expect (empty result). To get a match in those cases you will have to use two letter language codes instead:
      Locale::lookup(["en"], "en-GB", false);
    Or:
      Locale::lookup(["es"], "es-CO", false);
    These do return 'en' and 'es' respectively.