Do dupy z takim programem który raz działa a raz nie.
Wyślesz to przez FTP w trybie ASCII i skrypt nie nadaje się do niczego.
Albo ktoś kiedyś postanowi zajrzeć do skryptu, zmieni jakiś szczegół np. usunie biały znak, potem zapisze nie zwracając uwagi na kodowanie i znowu całość idzie w kibel.
Tak się tego nie robi.
Teraz troszke offtopne, bo autor nie znajduej czasu żeby odpowiedzieć na moje pytanie.
Oto metoda jakiej używam do zamiany diakrytyków na łacińskie odpowiedniki, o ile wiem nie da się lepiej, input musi być w UTF-8.
<?php
require 'I18N/UnicodeNormalizer.php';
$normalizer = new I18N_UnicodeNormalizer(); // z PEAR
function diacritic_replace( $s ) {
// maps German (umlauts) and other European characters onto two characters before just removing diacritics
$s = preg_replace( '@\x{00c4}@u' , "AE", $s ); // umlaut Ä => AE $s = preg_replace( '@\x{00d6}@u' , "OE", $s ); // umlaut Ö => OE $s = preg_replace( '@\x{00dc}@u' , "UE", $s ); // umlaut Ü => UE $s = preg_replace( '@\x{00e4}@u' , "ae", $s ); // umlaut ä => ae $s = preg_replace( '@\x{00f6}@u' , "oe", $s ); // umlaut ö => oe $s = preg_replace( '@\x{00fc}@u' , "ue", $s ); // umlaut ü => ue
// maps special characters (characters with diacritics) on their base-character followed by the diacritical mark
// exmaple: Ú => U´, á => a`
$s = $normalizer->normalize($s, 'NFD', 'UTF-8');
$s = preg_replace( '@\pM@u' , "", $s ); // removes diacritics
$s = preg_replace( '@\x{00df}@u' , "ss", $s ); // maps German ß onto ss
// remove all non-ASCii characters
return $s;
}