Есть ли способ конвертировать символы, такие как:
É É é à Ç etc
а также этот тип восклицательного знака с пробелом после его встроенного:
!
Для их нормальных версий. На данный момент у меня есть такой код:
$linesvalue = str_replace(["Ç","ç"],"ç",$linesvalue);
$linesvalue = str_replace(["É","É","é"],"é",$linesvalue);
$linesvalue = str_replace("è","è",$linesvalue);
$linesvalue = str_replace("à","à",$linesvalue);
$linesvalue = str_replace("â","â",$linesvalue);
$linesvalue = str_replace("ê","ê",$linesvalue);
Они выглядят так, как будто заменяют собой одно и то же, но, безусловно, нет. В любом случае, это не так уж плохо, но я нахожу, что когда я пытаюсь заменить восклицательный знак (!), в частности, он также заменяет некоторые акцентированные символы, такие как ü и подобные.
Есть ли способ преобразовать весь текст заранее, чтобы это были все стандартные символы?
использование форма нормализации С, чтобы нормализовать объединение марок, как акценты. Форма KC дополнительно преобразует символы полной ширины, такие как U + FF01, в стандартные версии.
Пример:
<?php
$string = "É É é à Ç !";
print "before: $string\n";
print "hex: " . unpack("H*", $string)[1] . "\n";
$string = Normalizer::normalize($string, Normalizer::FORM_KC);
print "after: $string\n";
print "hex: " . unpack("H*", $string)[1] . "\n";
Выход:
before: É É é à Ç !
hex: c3892045cc812065cc812061cc802043cca720efbc81
after: É É é à Ç !
hex: c38920c38920c3a920c3a020c3872021
Других решений пока нет …