Stergere - Inlocuire diacritice si alte caractere

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
Avatar utilizator
steell
Mesaje:190

Stergere - Inlocuire diacritice si alte caractere

salut
Vreau sa filtrez dintr-un formular toate litere cu diacritice, cu sedile, si alte litere straine ciudate, sa ramana doar cifrele si literele normale de pe tastatura fara orice diacritice sau sedile etc.
Nu prea am idei cum sa fac asta.

MarPlo Mesaje:4343
Salut
Daca vrei sa stergi diacriticile si alte caractere care nu sunt la tastatura standard, poti folosi codul din urmatorul exemplu.
- Dar stergand astfel diacriticile din cuvinte, ramane cuvantul gresit sau chiar cu alt inteles ("aşa casă" devine "aa cas").

Cod: Selectaţi tot

<?php
$str = 'Free Web programming courses: http://www.coursesweb.net. Diacritice  ă Ă â Â î Î ş Ş ţ Ţ íó. Caractere speciale: - _ = <> ? \ " +';
$rgx = '/[^a-z0-9_\.!@#\$%\^&\*\(\)\+=:;"\'\<\>\?\[\],\/\\`~ -\|]+/i';

$str = preg_replace($rgx, '', $str);
echo $str;
?>
Daca vrei sa inlocuiesti diacriticile si alte caractere cu echivalentul lor ASCII, se poate folosi functia din acest exemplu:

Cod: Selectaţi tot

<?php
// inlocuieste diacriticile si alte caractere cu echivalentul ASCII
function replaceSpecialChars($string){
 // http://www.coursesweb.net
  // caractere care trebuie inlocuite cu cele din $add (in aceeasi ordine)
  $rem = array('ă', 'Ă', 'ş', 'Ş', 'ţ', 'Ţ', 'à', 'á', 'â', 'ã', 'ä', 'å', 'æ', 'ç', 'è', 'é', 'ê', 'ë', 'ð', 'ì', 'í', 'î', 'ï', 'ñ', 'ò', 'ó', 'ô', 'õ', 'ö', 'ø', '§', 'ù', 'ú', 'û', 'ü', 'ý', 'ÿ', 'À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'Æ', 'Ç', 'È', 'É', 'Ê', 'Ë', '€', 'Ð', 'Ì', 'Í', 'Î', 'Ï', 'Ñ', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', 'Ø', '§', 'Ù', 'Ú', 'Û', 'Ü', 'Ý', 'Ÿ',
// aceleasi caractere, dar ca entitati HTML
'&agrave;', '&aacute;', '&acirc;', '&atilde;', '&auml;', '&aring;', '&aelig;', '&ccedil;', '&egrave;', '&eacute;', '&ecirc;', '&euml;', '&eth;', '&igrave;', '&iacute;', '&icirc;', '&iuml;', '&ntilde;', '&ograve;', '&oacute;', '&ocirc;', '&otilde;', '&ouml;', '&oslash;', '&sect;', '&ugrave;', '&uacute;', '&ucirc;', '&uuml;', '&yacute;', '&yuml;', '&Agrave;', '&Aacute;', '&Acirc;', '&Atilde;', '&Auml;', '&Aring;', '&AElig;', '&Ccedil;', '&Egrave;', '&Eacute;', '&Ecirc;', '&Euml;', '&euro;', '&ETH;', '&Igrave;', '&Iacute;', '&Icirc;', '&Iuml;', '&Ntilde;', '&Ograve;', '&Oacute;', '&Ocirc;', '&Otilde;', '&Ouml;', '&Oslash;', '&sect;', '&Ugrave;', '&Uacute;', '&Ucirc;', '&Uuml;', '&Yacute;', '&Yuml;');

  // caractere care vor fi adaugate
  $add = array('a', 'A', 's', 'S', 't', 'T', 'a', 'a', 'a', 'a', 'a', 'a', 'ae', 'c', 'e', 'e', 'e', 'e', 'ed', 'i', 'i', 'i', 'i', 'n', 'o', 'o', 'o', 'o', 'o', 'o', 's', 'u', 'u', 'u', 'u', 'y', 'y', 'A', 'A', 'A', 'A', 'A', 'A', 'AE', 'C', 'E', 'E', 'E', 'E', 'EUR', 'ED', 'I', 'I', 'I', 'I', 'N', 'O', 'O', 'O', 'O', 'O', 'O', 'S', 'U', 'U', 'U', 'U', 'Y', 'Y',
// pentru inlocuit entitatile HTML
'a', 'a', 'a', 'a', 'a', 'a', 'ae', 'c', 'e', 'e', 'e', 'e', 'ed', 'i', 'i', 'i', 'i', 'n', 'o', 'o', 'o', 'o', 'o', 'o', 's', 'u', 'u', 'u', 'u', 'y', 'y', 'A', 'A', 'A', 'A', 'A', 'A', 'AE', 'C', 'E', 'E', 'E', 'E', 'EUR', 'ED', 'I', 'I', 'I', 'I', 'N', 'O', 'O', 'O', 'O', 'O', 'O', 'S', 'U', 'U', 'U', 'U', 'Y', 'Y');

    return str_replace($rem, $add, $string);
}

$str = 'Free Web programming courses: http://www.coursesweb.net. Diacritice  ă Ă â Â î Î ş Ş ţ Ţ íó. Caractere speciale: - _ = <> ? \ " +';

$str = replaceSpecialChars($str);
echo $str;
?>