【问题标题】:How to compare 2 strings with different encoding and different unicode characters in PHP如何在 PHP 中比较具有不同编码和不同 unicode 字符的 2 个字符串
【发布时间】:2020-01-30 21:40:03
【问题描述】:
我需要按姓名和姓氏进行国际认证验证。但问题是,即使字符不同,我也需要返回 TRUE。
示例:
$str1 = 'Bożydar Kamiński';
$str2 = 'BOZYDAR KAMINSKI';
// I need this to be TRUE
if ($str1 == $str2) {
echo 'YOUR BUNNY WROTE';
}
是否有一些 php 默认函数可以将带有 unicode 字符 (str1) 的 UTF-8 字符串转换为纯拉丁字符?
【问题讨论】:
标签:
php
unicode
character
【解决方案1】:
如果您知道 UTF-8 编码器的可能差异,您可以创建自己的解码器。您可以创建一个包含所有可能的奇怪字符的表,并在函数中执行比较,然后交换等价的字符。
【解决方案2】:
$coll = Collator::create('');
$coll->setStrength(Collator::PRIMARY);
var_dump(0 == $coll->compare(
'Bożydar Kamiński',
'BOZYDAR KAMINSKI'
)); // bool(true)