Funzione per convertire i caratteri stranieri in forma normalizzata

Nel vostro sito possono capitare utenti da ogni angolo del mondo, soprattutto se gestite un e-commerce internazionale. In casi come questi, può capitare che l’utente invii caratteri tipici delle lingue straniere, che magari non vorreste visualizzare nel vostro sito.

La seguente funzione prende un testo in entrate e converte tutti i caratteri stranieri in una forma normalizzata (per dirla terra a terra, in una forma più simile all’italiano).
Vi sarà utile anche se gestite un blog con commenti aperti, visto che ormai è usanza sostituire coppie di lettere con caratteri stranieri: pensate per esempio alla “ß” tedesca, che tra i più giovani (per qualche ragione non ben comprensibile, dato lo sforzo per crearla su una tastiera comune) va spesso a sostituire la doppia “s”.

La funzione non è complessa e i commenti dovrebbero essere sufficienti per chiarire i piccoli dubbi.
Tenete presente che la funzione è stata creata per sostituire i caratteri stranieri, ma nulla vieta di aggiungere nell’array altri caratteri da sostituire automaticamente quando si passa il testo (il mio consiglio è sempre quello, però, di separare le funzioni in base al loro scopo).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
function foreign_text_normalize($string = ''){
 
	if(empty($string)){
		return $string;
	}
 
	$return = $string; //stringa da ritornare
 
	//array contenente i caratteri stranieri da convertire
	$foreign_characters = array(
		'ä|æ|ǽ' => 'ae',
		'ö|œ' => 'oe',
		'ü' => 'ue',
		'Ä' => 'Ae',
		'Ü' => 'Ue',
		'Ö' => 'Oe',
		'À|Á|Â|Ã|Ä|Å|Ǻ|Ā|Ă|Ą|Ǎ' => 'A',
		'à|á|â|ã|å|ǻ|ā|ă|ą|ǎ|ª' => 'a',
		'Ç|Ć|Ĉ|Ċ|Č' => 'C',
		'ç|ć|ĉ|ċ|č' => 'c',
		'Ð|Ď|Đ' => 'D',
		'ð|ď|đ' => 'd',
		'È|É|Ê|Ë|Ē|Ĕ|Ė|Ę|Ě' => 'E',
		'è|é|ê|ë|ē|ĕ|ė|ę|ě' => 'e',
		'Ĝ|Ğ|Ġ|Ģ' => 'G',
		'ĝ|ğ|ġ|ģ' => 'g',
		'Ĥ|Ħ' => 'H',
		'ĥ|ħ' => 'h',
		'Ì|Í|Î|Ï|Ĩ|Ī|Ĭ|Ǐ|Į|İ' => 'I',
		'ì|í|î|ï|ĩ|ī|ĭ|ǐ|į|ı' => 'i',
		'Ĵ' => 'J',
		'ĵ' => 'j',
		'Ķ' => 'K',
		'ķ' => 'k',
		'Ĺ|Ļ|Ľ|Ŀ|Ł' => 'L',
		'ĺ|ļ|ľ|ŀ|ł' => 'l',
		'Ñ|Ń|Ņ|Ň' => 'N',
		'ñ|ń|ņ|ň|ʼn' => 'n',
		'Ò|Ó|Ô|Õ|Ō|Ŏ|Ǒ|Ő|Ơ|Ø|Ǿ' => 'O',
		'ò|ó|ô|õ|ō|ŏ|ǒ|ő|ơ|ø|ǿ|º' => 'o',
		'Ŕ|Ŗ|Ř' => 'R',
		'ŕ|ŗ|ř' => 'r',
		'Ś|Ŝ|Ş|Š' => 'S',
		'ś|ŝ|ş|š|ſ' => 's',
		'Ţ|Ť|Ŧ' => 'T',
		'ţ|ť|ŧ' => 't',
		'Ù|Ú|Û|Ũ|Ū|Ŭ|Ů|Ű|Ų|Ư|Ǔ|Ǖ|Ǘ|Ǚ|Ǜ' => 'U',
		'ù|ú|û|ũ|ū|ŭ|ů|ű|ų|ư|ǔ|ǖ|ǘ|ǚ|ǜ' => 'u',
		'Ý|Ÿ|Ŷ' => 'Y',
		'ý|ÿ|ŷ' => 'y',
		'Ŵ' => 'W',
		'ŵ' => 'w',
		'Ź|Ż|Ž' => 'Z',
		'ź|ż|ž' => 'z',
		'Æ|Ǽ' => 'AE',
		'ß'=> 'ss',
		'IJ' => 'IJ',
		'ij' => 'ij',
		'Œ' => 'OE',
		'ƒ' => 'f'
	);
 
	foreach($foreign_characters as $key=>$value){
 
		//suddivido la chiave nei suoi elementi (che sono separati da |)
		$ar = explode('|', $key);
 
		foreach($ar as $value2){
 
			//sostituisce ogni carattere straniero con il suo corrispondente normalizzato
			$return = str_replace($value2, $key, $return);
 
		}
 
	}
 
	return $return;
 
}

Ecco un esempio di utilizzo della funzione:


1
2
3
4
5
$testo= "L'albero del viale non era poi così großo";
$risultato = foreign_text_normalize($testo);
 
//darà come risultato:
//L'albero del viale non era poi così grosso
Etichette:

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *