- <?php 
-   
- 		function FixUTF8($args) { 
- 			$output = $args['input']; 
-   
- 			$output = convertNamedHTMLEntitiesToNumeric(['input'=>$output]); 
-   
- 			preg_match_all('/(&#[0-9]+;)/', $output, $matches,-  PREG_OFFSET_CAPTURE );
 
- 			$full_matches = $matches[0]; 
-   
- 			$found = []; 
- 			$search = []; 
- 			$replace = []; 
-   
- 			for($i = 0; $i < count($full_matches); $i++) { 
- 				$match = $full_matches[$i]; 
- 				$word = $match[0]; 
- 				if(!$found[$word]) { 
- 					$found[$word] = TRUE; 
- 					$search[] = $word; 
- 					$replacement = str_replace(['&#', ';'], ['HTML Entity #', ''], $word); 
- 					$replace[] = $replacement; 
- 				} 
- 			} 
-   
-   
- 			return $new_output; 
- 		} 
-   
- 		function convertNamedHTMLEntitiesToNumeric($args) { 
- 			$input = $args['input']; 
- 				# return htmlentities($c,ENT_XML1,"UTF-8"); -- see update below 
-   
- 				$convmap = array(0x80, 0xffff, 0, 0xffff); 
- 			}, $input); 
- 		} 
-   
- print(FixUTF8(['input'=>"Oggi è un bel giorno"])); 
				PD9waHAKCgkJZnVuY3Rpb24gRml4VVRGOCgkYXJncykgewoJCQkkb3V0cHV0ID0gJGFyZ3NbJ2lucHV0J107CgkJCQoJCQkkb3V0cHV0ID0gY29udmVydE5hbWVkSFRNTEVudGl0aWVzVG9OdW1lcmljKFsnaW5wdXQnPT4kb3V0cHV0XSk7CgkJCQoJCQlwcmVnX21hdGNoX2FsbCgnLygmI1swLTldKzspLycsICRvdXRwdXQsICRtYXRjaGVzLCBQUkVHX09GRlNFVF9DQVBUVVJFKTsKCQkJJGZ1bGxfbWF0Y2hlcyA9ICRtYXRjaGVzWzBdOwoJCQkKCQkJJGZvdW5kID0gW107CgkJCSRzZWFyY2ggPSBbXTsKCQkJJHJlcGxhY2UgPSBbXTsKCQkJCgkJCWZvcigkaSA9IDA7ICRpIDwgY291bnQoJGZ1bGxfbWF0Y2hlcyk7ICRpKyspIHsKCQkJCSRtYXRjaCA9ICRmdWxsX21hdGNoZXNbJGldOwoJCQkJJHdvcmQgPSAkbWF0Y2hbMF07CgkJCQlpZighJGZvdW5kWyR3b3JkXSkgewoJCQkJCSRmb3VuZFskd29yZF0gPSBUUlVFOwoJCQkJCSRzZWFyY2hbXSA9ICR3b3JkOwoJCQkJCSRyZXBsYWNlbWVudCA9IHN0cl9yZXBsYWNlKFsnJiMnLCAnOyddLCBbJ0hUTUwgRW50aXR5ICMnLCAnJ10sICR3b3JkKTsKCQkJCQkkcmVwbGFjZVtdID0gJHJlcGxhY2VtZW50OwoJCQkJfQoJCQl9CgoJCQkkbmV3X291dHB1dCA9IHN0cl9yZXBsYWNlKCRzZWFyY2gsICRyZXBsYWNlLCAkb3V0cHV0KTsKCQkJCgkJCXJldHVybiAkbmV3X291dHB1dDsKCQl9CgkJCgkJZnVuY3Rpb24gY29udmVydE5hbWVkSFRNTEVudGl0aWVzVG9OdW1lcmljKCRhcmdzKSB7CgkJCSRpbnB1dCA9ICRhcmdzWydpbnB1dCddOwoJCQlyZXR1cm4gcHJlZ19yZXBsYWNlX2NhbGxiYWNrKCIvKCZbYS16QS1aXVthLXpBLVowLTldKjspLyIsZnVuY3Rpb24oJG0pewoJCQkJJGMgPSBodG1sX2VudGl0eV9kZWNvZGUoJG1bMF0sRU5UX0hUTUw1LCJVVEYtOCIpOwoJCQkJIyByZXR1cm4gaHRtbGVudGl0aWVzKCRjLEVOVF9YTUwxLCJVVEYtOCIpOyAtLSBzZWUgdXBkYXRlIGJlbG93CgkJCQkKCQkJCSRjb252bWFwID0gYXJyYXkoMHg4MCwgMHhmZmZmLCAwLCAweGZmZmYpOwoJCQkJcmV0dXJuIG1iX2VuY29kZV9udW1lcmljZW50aXR5KCRjLCAkY29udm1hcCwgJ1VURi04Jyk7CgkJCX0sICRpbnB1dCk7CgkJfQoKcHJpbnQoRml4VVRGOChbJ2lucHV0Jz0+Ik9nZ2kgJmVncmF2ZTsgdW4gYmVsJm5ic3A7Z2lvcm5vIl0pKTs=