Unicode — PHP конвертирует нестандартные метки и специальные символы в обычные

Есть ли способ конвертировать символы, такие как:

É É é à Ç 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);

Они выглядят так, как будто заменяют собой одно и то же, но, безусловно, нет. В любом случае, это не так уж плохо, но я нахожу, что когда я пытаюсь заменить восклицательный знак (!), в частности, он также заменяет некоторые акцентированные символы, такие как ü и подобные.

Есть ли способ преобразовать весь текст заранее, чтобы это были все стандартные символы?

0

Решение

использование форма нормализации С, чтобы нормализовать объединение марок, как акценты. Форма 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
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]