with strip_tags remove ent_quotes ejemplo php regex special-characters string-search

php - remove - strip_tags wordpress



Cambiar los caracteres extranjeros a su equivalente normal (6)

Estoy usando php y me preguntaba si había una forma predefinida de convertir caracteres extranjeros a sus alternativas no extranjeras.

Caracteres como ê, ë, é todos resultantes de ''e'' .
Estoy buscando una función que tome una cadena y la devuelva sin los caracteres especiales.
¡Cualquier idea sería apreciada grandemente!


Codifiqué esta función que usa la tabla de traducción de entidades HTML incorporada en PHP para romanizar los caracteres:

function Unaccent($string) { if (strpos($string = htmlentities($string, ENT_QUOTES, ''UTF-8''), ''&'') !== false) { $string = html_entity_decode(preg_replace(''~&([a-z]{1,2})(?:acute|cedil|circ|grave|lig|orn|ring|slash|tilde|uml);~i'', ''$1'', $string), ENT_QUOTES, ''UTF-8''); } return $string; }

Funciona aplicando htmlentities() y luego eliminando los sufijos de entidades comunes, un ejemplo simple:

- ã = ã -> a - Ã = Ã -> A - õ = õ -> o - Õ = Õ -> O - æ = æ -> ae - Æ = Æ -> AE

Tenga en cuenta que para que esto funcione correctamente, sus archivos deben estar codificados en UTF-8 (obviamente no hay BOM).

Vea también mi otra respuesta para otro ejemplo.


Después de no encontrar los convertidores adecuados, creé mi propia colección que se adapta a mis necesidades, incluida mi conversión cirílica favorita que, de forma predeterminada, tiene numerosas variaciones.

function transliterateString($txt) { $transliterationTable = array(''á'' => ''a'', ''Á'' => ''A'', ''à'' => ''a'', ''À'' => ''A'', ''ă'' => ''a'', ''Ă'' => ''A'', ''â'' => ''a'', ''Â'' => ''A'', ''å'' => ''a'', ''Å'' => ''A'', ''ã'' => ''a'', ''Ã'' => ''A'', ''ą'' => ''a'', ''Ą'' => ''A'', ''ā'' => ''a'', ''Ā'' => ''A'', ''ä'' => ''ae'', ''Ä'' => ''AE'', ''æ'' => ''ae'', ''Æ'' => ''AE'', ''ḃ'' => ''b'', ''Ḃ'' => ''B'', ''ć'' => ''c'', ''Ć'' => ''C'', ''ĉ'' => ''c'', ''Ĉ'' => ''C'', ''č'' => ''c'', ''Č'' => ''C'', ''ċ'' => ''c'', ''Ċ'' => ''C'', ''ç'' => ''c'', ''Ç'' => ''C'', ''ď'' => ''d'', ''Ď'' => ''D'', ''ḋ'' => ''d'', ''Ḋ'' => ''D'', ''đ'' => ''d'', ''Đ'' => ''D'', ''ð'' => ''dh'', ''Ð'' => ''Dh'', ''é'' => ''e'', ''É'' => ''E'', ''è'' => ''e'', ''È'' => ''E'', ''ĕ'' => ''e'', ''Ĕ'' => ''E'', ''ê'' => ''e'', ''Ê'' => ''E'', ''ě'' => ''e'', ''Ě'' => ''E'', ''ë'' => ''e'', ''Ë'' => ''E'', ''ė'' => ''e'', ''Ė'' => ''E'', ''ę'' => ''e'', ''Ę'' => ''E'', ''ē'' => ''e'', ''Ē'' => ''E'', ''ḟ'' => ''f'', ''Ḟ'' => ''F'', ''ƒ'' => ''f'', ''Ƒ'' => ''F'', ''ğ'' => ''g'', ''Ğ'' => ''G'', ''ĝ'' => ''g'', ''Ĝ'' => ''G'', ''ġ'' => ''g'', ''Ġ'' => ''G'', ''ģ'' => ''g'', ''Ģ'' => ''G'', ''ĥ'' => ''h'', ''Ĥ'' => ''H'', ''ħ'' => ''h'', ''Ħ'' => ''H'', ''í'' => ''i'', ''Í'' => ''I'', ''ì'' => ''i'', ''Ì'' => ''I'', ''î'' => ''i'', ''Î'' => ''I'', ''ï'' => ''i'', ''Ï'' => ''I'', ''ĩ'' => ''i'', ''Ĩ'' => ''I'', ''į'' => ''i'', ''Į'' => ''I'', ''ī'' => ''i'', ''Ī'' => ''I'', ''ĵ'' => ''j'', ''Ĵ'' => ''J'', ''ķ'' => ''k'', ''Ķ'' => ''K'', ''ĺ'' => ''l'', ''Ĺ'' => ''L'', ''ľ'' => ''l'', ''Ľ'' => ''L'', ''ļ'' => ''l'', ''Ļ'' => ''L'', ''ł'' => ''l'', ''Ł'' => ''L'', ''ṁ'' => ''m'', ''Ṁ'' => ''M'', ''ń'' => ''n'', ''Ń'' => ''N'', ''ň'' => ''n'', ''Ň'' => ''N'', ''ñ'' => ''n'', ''Ñ'' => ''N'', ''ņ'' => ''n'', ''Ņ'' => ''N'', ''ó'' => ''o'', ''Ó'' => ''O'', ''ò'' => ''o'', ''Ò'' => ''O'', ''ô'' => ''o'', ''Ô'' => ''O'', ''ő'' => ''o'', ''Ő'' => ''O'', ''õ'' => ''o'', ''Õ'' => ''O'', ''ø'' => ''oe'', ''Ø'' => ''OE'', ''ō'' => ''o'', ''Ō'' => ''O'', ''ơ'' => ''o'', ''Ơ'' => ''O'', ''ö'' => ''oe'', ''Ö'' => ''OE'', ''ṗ'' => ''p'', ''Ṗ'' => ''P'', ''ŕ'' => ''r'', ''Ŕ'' => ''R'', ''ř'' => ''r'', ''Ř'' => ''R'', ''ŗ'' => ''r'', ''Ŗ'' => ''R'', ''ś'' => ''s'', ''Ś'' => ''S'', ''ŝ'' => ''s'', ''Ŝ'' => ''S'', ''š'' => ''s'', ''Š'' => ''S'', ''ṡ'' => ''s'', ''Ṡ'' => ''S'', ''ş'' => ''s'', ''Ş'' => ''S'', ''ș'' => ''s'', ''Ș'' => ''S'', ''ß'' => ''SS'', ''ť'' => ''t'', ''Ť'' => ''T'', ''ṫ'' => ''t'', ''Ṫ'' => ''T'', ''ţ'' => ''t'', ''Ţ'' => ''T'', ''ț'' => ''t'', ''Ț'' => ''T'', ''ŧ'' => ''t'', ''Ŧ'' => ''T'', ''ú'' => ''u'', ''Ú'' => ''U'', ''ù'' => ''u'', ''Ù'' => ''U'', ''ŭ'' => ''u'', ''Ŭ'' => ''U'', ''û'' => ''u'', ''Û'' => ''U'', ''ů'' => ''u'', ''Ů'' => ''U'', ''ű'' => ''u'', ''Ű'' => ''U'', ''ũ'' => ''u'', ''Ũ'' => ''U'', ''ų'' => ''u'', ''Ų'' => ''U'', ''ū'' => ''u'', ''Ū'' => ''U'', ''ư'' => ''u'', ''Ư'' => ''U'', ''ü'' => ''ue'', ''Ü'' => ''UE'', ''ẃ'' => ''w'', ''Ẃ'' => ''W'', ''ẁ'' => ''w'', ''Ẁ'' => ''W'', ''ŵ'' => ''w'', ''Ŵ'' => ''W'', ''ẅ'' => ''w'', ''Ẅ'' => ''W'', ''ý'' => ''y'', ''Ý'' => ''Y'', ''ỳ'' => ''y'', ''Ỳ'' => ''Y'', ''ŷ'' => ''y'', ''Ŷ'' => ''Y'', ''ÿ'' => ''y'', ''Ÿ'' => ''Y'', ''ź'' => ''z'', ''Ź'' => ''Z'', ''ž'' => ''z'', ''Ž'' => ''Z'', ''ż'' => ''z'', ''Ż'' => ''Z'', ''þ'' => ''th'', ''Þ'' => ''Th'', ''µ'' => ''u'', ''а'' => ''a'', ''А'' => ''a'', ''б'' => ''b'', ''Б'' => ''b'', ''в'' => ''v'', ''В'' => ''v'', ''г'' => ''g'', ''Г'' => ''g'', ''д'' => ''d'', ''Д'' => ''d'', ''е'' => ''e'', ''Е'' => ''E'', ''ё'' => ''e'', ''Ё'' => ''E'', ''ж'' => ''zh'', ''Ж'' => ''zh'', ''з'' => ''z'', ''З'' => ''z'', ''и'' => ''i'', ''И'' => ''i'', ''й'' => ''j'', ''Й'' => ''j'', ''к'' => ''k'', ''К'' => ''k'', ''л'' => ''l'', ''Л'' => ''l'', ''м'' => ''m'', ''М'' => ''m'', ''н'' => ''n'', ''Н'' => ''n'', ''о'' => ''o'', ''О'' => ''o'', ''п'' => ''p'', ''П'' => ''p'', ''р'' => ''r'', ''Р'' => ''r'', ''с'' => ''s'', ''С'' => ''s'', ''т'' => ''t'', ''Т'' => ''t'', ''у'' => ''u'', ''У'' => ''u'', ''ф'' => ''f'', ''Ф'' => ''f'', ''х'' => ''h'', ''Х'' => ''h'', ''ц'' => ''c'', ''Ц'' => ''c'', ''ч'' => ''ch'', ''Ч'' => ''ch'', ''ш'' => ''sh'', ''Ш'' => ''sh'', ''щ'' => ''sch'', ''Щ'' => ''sch'', ''ъ'' => '''', ''Ъ'' => '''', ''ы'' => ''y'', ''Ы'' => ''y'', ''ь'' => '''', ''Ь'' => '''', ''э'' => ''e'', ''Э'' => ''e'', ''ю'' => ''ju'', ''Ю'' => ''ju'', ''я'' => ''ja'', ''Я'' => ''ja''); return str_replace(array_keys($transliterationTable), array_values($transliterationTable), $txt); }


Espero que esto sea útil para cualquiera: https://github.com/infralabs/DiacriticsRemovePHP

Esta clase elimina los signos diacríticos de las cadenas que contienen caracteres especiales Latin-1, Latin Extended-A y Latin Extended-B.

uso:

$specialCharacters = ""; $specialCharacters .= "Latin-1 Supplement".PHP_EOL; $specialCharacters .= "ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ".PHP_EOL; $specialCharacters .= "Latin Extended-A".PHP_EOL; $specialCharacters .= "ĀāĂ㥹ĆćĈĉĊċČčĎďĐđĒēĔĕĖėĘęĚěĜĝĞğĠġĢģĤĥĦħĨĩĪīĬĭĮįİıIJijĴĵĶķĸĹĺĻļĽľĿŀŁłŃńŅņŇňʼnŊŋŌōŎŏŐőŒœŔŕŖŗŘřŚśŜŝŞşŠšŢţŤťŦŧŨũŪūŬŭŮůŰűŲųŴŵŶŷŸŹźŻżŽžſ".PHP_EOL; $specialCharacters .= "Latin Extended-B".PHP_EOL; $specialCharacters .= "ƒǺǻǼǽǾǿ".PHP_EOL; $specialCharacters .= "Latin Extended Additional".PHP_EOL; $specialCharacters .= "ẀẁẂẃẄẅỲỳ".PHP_EOL; print "<pre>"; print removeDiacritics($specialCharacters).PHP_EOL; print "</pre>";

fuente:

Suplemento Latin-1

ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ × ØÙÚÛÜÝÞßàáâãäåææèèêëìíîïðñòóôõö ÷ øùúûüýþÿ

Latin Extended-A

ĀāĂ㥹ĆćĈĉĊċČčĎďĐđĒēĔĕĖėĘęĚěĜĝĞğĠġĢģĤĥĦħĨĩĪīĬĭĮįİıIJijĴĵĶķĸĹĺĻļĽľĿŀŁłŃńŅņŇňʼnŊŋŌōŎŏŐőŒœŔŕŖŗŘřŚśŜŝŞşŠšŢţŤťŦŧŨũŪūŬŭŮůŰűŲųŴŵŶŷŸŹźŻżŽžſ

Latín extendido-b

ƒǺǻǼǽǾǿ

Latín Extendido Adicional

ẀẁẂẃẄẅỲỳ

resultado:

Suplemento Latin-1

AAAAAAAECEEEEIIIIDNOOOOO × OUUUUYTHssaaaaaaaeceeeeiiiidnooooo ÷ ouuuuythy

Latin Extended-A

AaAaAaCcCcCcCcDdDdEeEeEeEeEeGgGgGgGgHhHhIiIiIiIiIiIJijJjKkĸLlLlLlLlLlNnNnNnnNnOoOoOoOEoeRrRrRrSsSsSsSsTtTtTtUuUuUuUuUuUuWwYyYZzZzZzs

Latín extendido-b

fAaAEaeOo

Latín Extendido Adicional

WWWWWWWYY


La forma más genérica de resolver esto es usar la Normalización de Unicode, ya que funciona automáticamente en todos los acentos, no es necesario preparar la lista por adelantado. No sé si está fácilmente disponible en PHP, lo he usado en C y Java. Esencialmente, primero transforma la cadena de manera que todos los caracteres acentuados estén representados por un carácter regular más el llamado signo diacrítico de composición (una biblioteca incorporada o externa debería proporcionar esta función), y luego elimine los signos diacríticos de composición (utilizando una biblioteca especializada, usando propiedades de caracteres que proporciona el lenguaje o usando algunas extensiones de expresiones regulares).


Mi primera recomendación es la función iconv. Es decir, porque está integrado en PHP, por lo que no requiere ninguna biblioteca externa o de terceros. Además, es una función que está diseñada para hacer precisamente lo que está tratando de lograr (aceptar en el conjunto de caracteres como entrada y generar un conjunto de caracteres alternativo, específicamente desde UTF-8 a ASCII). A continuación se muestra un ejemplo de cómo llamar a esta función:

$clean_ascii_output = iconv(''UTF-8'', ''ASCII//TRANSLIT'', $utf8_input);

Puede encontrar más información sobre los detalles de esta función de PHP aquí: http://php.net/manual/en/function.iconv.php

Nota: la función iconv acepta entradas de cadena, por lo que querrá iterar sobre los datos y analizarlos de tal manera que esté pasando una entrada de cadena.