我正在尝试使用'áéíóú'等字符对字符串进行规范化,以简化搜索.
在回答这个问题之后,我应该用这个Normalizer课来做.
问题是该normalize功能什么都不做.例如,该代码:
<?php echo 'Pérez, NFC: ' . normalizer_normalize('Pérez', Normalizer::NFC)
. ' NFD: ' .normalizer_normalize('Pérez', Normalizer::NFD)
. ' NFKC: ' .normalizer_normalize('Pérez', Normalizer::NFKC)
. ' NFKD: ' .normalizer_normalize('Pérez', Normalizer::NFKD)?>
<br/>
<?php echo 'aáàä, êëéè,'
. ' FORM_C: ' . normalizer_normalize('aáàä, êëéè', Normalizer::FORM_C )
. ' FORM_D: ' .normalizer_normalize('aáàä, êëéè', Normalizer::FORM_D)
. ' FORM_KC: ' .normalizer_normalize('aáàä, êëéè', Normalizer::FORM_KC)
. ' FORM_KD: ' .normalizer_normalize('aáàä, êëéè', Normalizer::FORM_KD)?>
Run Code Online (Sandbox Code Playgroud)
说明:
Pérez, NFC: Pérez NFD: Pe?rez NFKC: Pérez NFKD: Pe?rez …Run Code Online (Sandbox Code Playgroud) 我使用PHP,并想知道如何通过Internationalization扩展(ICU库的Wrapper)获取区域设置的默认货币?
下面是一个解释,内容和原因的脚本.我需要一些东西来代替这个getCurrCode()功能.
$accepted_currencies = array('USD','EUR');
$locale = Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']);
if( ! empty($locale)){
Locale::setDefault($locale);
$currency = getCurrCode();
if( ! in_array($currency, $accepted_currencies)){
$currency = 'USD';
}
}else{
Locale::setDefault('en_US');
}
$fmt = new NumberFormatter( $locale, NumberFormatter::CURRENCY );
$price = $fmt->formatCurrency(1234567.891234567890000, $currency);
Run Code Online (Sandbox Code Playgroud)
我知道,我可以使用,setlocale(LC_MONETARY, $locale);但这意味着我必须将所有语言环境安装到Linux上,并处理Linux发行版的变化.那么首先使用Intl会有什么意义呢?
我正在阅读PHP手册,并在intl扩展文档页面中遇到了这个Spoofchecker类.类中的方法,它们的参数以及类本身都是公平的,所以我想知道它的目的是什么.
我正在使用过滤器localizedcurrency在多语言网站中设置价格格式。由于这是房屋价格,因此我不需要小数部分。
除了使用replace过滤器之外,我无法找到隐藏方法。我想知道是否有更好的方法,因为使用replace它将意味着我必须替换英语中的点和法语中的逗号等等。
我也不能使用某种形式的substr,因为美元符号可以在值之前或之后。
我尝试将int而不是float传递给过滤器,但是它默认为 .00
谢谢!
当我安装Symfony2沙箱并尝试通过check.php检查要求时,我遇到了2个问题.我的服务器没有posix和intl扩展名.我在Windows 7 32bit上使用WampServer 2.1e(32位),所以我的apache和php版本是:Apache 2.2.17 VC6 ThreadSafe Php 5.3.5
我试图从http://windows.php.net/downloads/releases/php-5.3.5-Win32-VC6-x86.zip应用intl扩展, 但我在apache日志中有奇怪的错误:"找不到扩展名在c:/ wamp/..."我确定该扩展名在正确的目录中并在php.ini中启用.
随着posix扩展,我有更大的问题.我在Windows平台上根本找不到它.在php的文档中,据说它应该默认启用,但事实并非如此.
Transliterator::listIDs() 将列出 ID,但显然它不是一个完整的列表。
Any-Latin; NFD; [:Nonspacing Mark:] Remove; NFC; [:Punctuation:] Remove; Lower();
Run Code Online (Sandbox Code Playgroud)
这有点奇怪,因为 ID 应该是唯一的。这看起来更像是一条规则,但如果我将它传递给createFromRules方法,它就不起作用:)
无论如何,我正在尝试从字符串中删除任何标点符号,但破折号 ( -) 或特定列表中的字符除外。
你知道这可能吗?或者是否有一些文档可以更好地解释音译器的语法?
我正在尝试运行使用locale_accept_from_httpintl 扩展中的函数的php 应用程序。我的 php 版本是7.2,我收到一个错误:Call to undefined function locale_accept_from_http();
我在尝试:
1.安装扩展sudo apt-get install php-intl。错误是:
无法安装某些软件包。这可能意味着您请求了一个不可能的情况,或者如果您使用的是不稳定的发行版,则某些必需的包尚未创建或已从 Incoming 中移出。以下信息可能有助于解决这种情况:
以下软件包具有未满足的依赖项: php-intl : 依赖项:php7.1-intl 但不会安装 E: 无法纠正问题,您持有损坏的软件包。
2. 在 php.ini 中启用 intl 扩展。 我收到警告:
PHP 警告:PHP 启动:无法加载动态库“intl”
使用此扩展的正确方法是什么php7.2?
我学会了颤振。我使用 intl 依赖构建了一个国际化的应用程序(按照这个)
Run Code Online (Sandbox Code Playgroud)flutter packages pub run intl_translation:extract_to_arb --output-dir=lib/l10n lib/main.dart
生成了3个文件:
我需要在运行下一个命令之前创建intl_{locale}.arb 文件。
下一个命令:
颤振包 pub 运行 intl_translation:generate_from_arb \ --output-dir=lib/l10n --no-use-deferred-loading \ lib/main.dart lib/l10n/intl_*.arb
尽管生成了相应的消息 (messages_en.dart) 文件,但它始终返回消息:
No @@locale or _locale field found in intl_en, assuming 'en' based on the file name.
No @@locale or _locale field found in intl_messages, assuming 'messages' based on the file name.
Run Code Online (Sandbox Code Playgroud)
如何在没有消息的情况下运行第二个命令,因为我认为它们是意外消息?
我在我的 macbook pro 上安装了 php 7.3.4,并且我正在尝试启用作曲家需要的 php 扩展(intl)。我在 php.ini 中启用了扩展 intl,但收到一条错误消息,指出找不到它 - 所以我假设这意味着我需要安装它。我在网上找到了有关如何安装扩展的教程(底部的链接),然后我按照这个进行操作。在我运行的阶段sudo pecl install intl,我收到一个错误;make: *** [php_intl.lo] 错误 1 错误: `make' 失败
有没有人有办法解决吗?
Jamess-MBP:~ work$ sudo pecl install intl
Password: .........
PHP Warning: PHP Startup: Unable to load dynamic library 'intl' (tried: /usr/local/lib/php/pecl/20180731/intl (dlopen(/usr/local/lib/php/pecl/20180731/intl, 9): image not found), /usr/local/lib/php/pecl/20180731/intl.so (dlopen(/usr/local/lib/php/pecl/20180731/intl.so, 9): image not found)) in Unknown on line 0
Warning: PHP Startup: Unable to load dynamic library 'intl' (tried: /usr/local/lib/php/pecl/20180731/intl (dlopen(/usr/local/lib/php/pecl/20180731/intl, 9): image not found), /usr/local/lib/php/pecl/20180731/intl.so (dlopen(/usr/local/lib/php/pecl/20180731/intl.so, …Run Code Online (Sandbox Code Playgroud) 我的项目当前的flutter版本是2.2.3,我的intl库的版本是0.17.0。当我向任何语言文件添加新值时,生成的文件中的 messages_all 和 l10n 文件中都会插入空安全语法。 代码片段:
MessageLookupByLibrary? _findExact(String localeName) {
switch (localeName) {
case 'ar':
return messages_ar.messages;
case 'de':
return messages_de.messages;
case 'en':
return messages_en.messages;
case 'fr':
return messages_fr.messages;
case 'ru':
return messages_ru.messages;
case 'tr':
return messages_tr.messages;
default:
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
MessageLookByLibrary?
当我编辑语言文件时:
flutter pub global run intl_utils:generate
INFO: No @@locale or _locale field found in intl_ar, assuming 'ar' based on the file name.
INFO: No @@locale or _locale field found in intl_de, assuming 'de' based on the file …Run Code Online (Sandbox Code Playgroud)