У меня две струны
Строка 1: «Себастьян».
Строка 2: «Себастьян»
Я хочу сравнить эти две строки, игнорируя символ é (акценты). Может кто знает эту логику?
заранее спасибо
У меня две струны
Строка 1: «Себастьян».
Строка 2: «Себастьян»
Я хочу сравнить эти две строки, игнорируя символ é (акценты). Может кто знает эту логику?
заранее спасибо
Вычислите сходство между двумя строками с помощью функции Similar_text.
Перед синтаксическим анализом «é» с помощью:
<?php
function normalize($string) {
$string = strtr($string, array('ő' => 'o', 'ű' => 'u', 'Ő' => 'O', 'Ű' => 'U'));
$a = 'ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖŐØÙÚÛÜŰÝÞßàáâãäåæçèéêëìíîïðñòóôõöőøùúûűüýýþÿŔŕ';
$b = 'AAAAAAACEEEEIIIIDNOOOOOOOUUUUUYbsaaaaaaaceeeeiiiidnooooooouuuuuyybyRr';
$string = utf8_decode($string);
$string = strtr($string, utf8_decode($a), $b);
return utf8_encode($string);
}
?>
См. Дополнительную информацию по адресу: http://bitprison.net/php_normalize_string_function#sthash.tMoMbaOG.dpuf
Используйте расширение PHP Normalizer или iconv, подробнее:
http://www.php.net/manual/en/class.normalizer.php
http://www.php.net/manual/en/function.iconv.php
<?php
$string = 'Sébastien';
echo Normalizer::normalize($string);
echo iconv('UTF-8', 'ASCII//TRANSLIT', $string);
?>
Вы также можете использовать пакет behat / transliterator:
require_once 'vendor/autoload.php';
$stringWithoutAccent = 'acces';
$stringWithAccent = 'accès';
// true
var_dump($stringWithoutAccent === \Behat\Transliterator\Transliterator::unaccent($stringWithAccent));
Вы можете просто декодировать строки в utf8 и сравнить их.
В противном случае, если под игнорированием вы имели в виду вообще не сравнивать символ, тогда вам, возможно, придется выполнить сравнение по символам. Во-первых, переведите обе строки в верхний или нижний регистр, и где бы вы ни встретили символ, отличный от Unicode, пропустите сравнение и перейдите к сравнению следующего символа.