2014-09-15 2 views
0

Я искал ответ на этот вопрос в течение очень долгого времени и получил много разных ответов, которые, похоже, не работали для меня. Я запрашиваю базу данных, а затем проверяю данные перед тем, как записать ее в файл XML, используя fwrite(). Я создал следующую функцию, чтобы заменить все символы Non-ASCII с простым английским (т.е. заменить е с Е.):Замена символов, отличных от ASCII, на английские эквиваленты

function replaceASCII($str) { 
    $search = array(
     'À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'Æ', 'Ā', 'Ą', 'Ă', 'Ç', 'Ć', 'Č', 'Ĉ', 'Ċ', 'Ď', 'Đ', 'È', 'É', 'Ê', 'Ë', 'Ē', 'Ę', 'Ě', 'Ĕ', 'Ė', 'Ĝ', 'Ğ', 'Ġ', 
     'Ģ', 'Ĥ', 'Ħ', 'Ì', 'Í', 'Î', 'Ï', 'Ī', 'Ĩ', 'Ĭ', 'Į', 'İ', 'IJ', 'Ĵ', 'Ķ', 'Ľ', 'Ĺ', 'Ļ', 'Ŀ', 'Ł', 'Ñ', 'Ń', 'Ň', 'Ņ', 'Ŋ', 'Ò', 'Ó', 'Ô', 'Õ', 
     'Ö', 'Ø', 'Ō', 'Ő', 'Ŏ', 'Œ', 'Ŕ', 'Ř', 'Ŗ', 'Ś', 'Ş', 'Ŝ', 'Ș', 'Š', 'Ť', 'Ţ', 'Ŧ', 'Ț', 'Ù', 'Ú', 'Û', 'Ü', 'Ū', 'Ů', 'Ű', 'Ŭ', 'Ũ', 'Ų', 'Ŵ', 
     'Ŷ', 'Ÿ', 'Ý', 'Ź', 'Ż', 'Ž', 'à', 'á', 'â', 'ã', 'ä', 'ā', 'ą', 'ă', 'å', 'æ', 'ç', 'ć', 'č', 'ĉ', 'ċ', 'ď', 'đ', 'è', 'é', 'ê', 'ë', 'ē', 'ę', 
     'ě', 'ĕ', 'ė', 'ƒ', 'ĝ', 'ğ', 'ġ', 'ģ', 'ĥ', 'ħ', 'ì', 'í', 'î', 'ï', 'ī', 'ĩ', 'ĭ', 'į', 'ı', 'ij', 'ĵ', 'ķ', 'ĸ', 'ł', 'ľ', 'ĺ', 'ļ', 'ŀ', 'ñ', 
     'ń', 'ň', 'ņ', 'ʼn', 'ŋ', 'ò', 'ó', 'ô', 'õ', 'ö', 'ø', 'ō', 'ő', 'ŏ', 'œ', 'ŕ', 'ř', 'ŗ', 'ś', 'š', 'ş', 'ť', 'ţ', 'ù', 'ú', 'û', 'ü', 'ū', 'ů', 
     'ű', 'ŭ', 'ũ', 'ų', 'ŵ', 'ÿ', 'ý', 'ŷ', 'ż', 'ź', 'ž', 'ß', 'ſ', 'Α', 'Ά', 'Ἀ', 'Ἁ', 'Ἂ', 'Ἃ', 'Ἄ', 'Ἅ', 'Ἆ', 'Ἇ', 'ᾈ', 'ᾉ', 'ᾊ', 'ᾋ', 'ᾌ', 
     'ᾍ', 'ᾎ', 'ᾏ', 'Ᾰ', 'Ᾱ', 'Ὰ', 'Ά', 'ᾼ', 'Β', 'Γ', 'Δ', 'Ε', 'Έ', 'Ἐ', 'Ἑ', 'Ἒ', 'Ἓ', 'Ἔ', 'Ἕ', 'Έ', 'Ὲ', 'Ζ', 'Η', 'Ή', 'Ἠ', 'Ἡ', 'Ἢ', 
     'Ἣ', 'Ἤ', 'Ἥ', 'Ἦ', 'Ἧ', 'ᾘ', 'ᾙ', 'ᾚ', 'ᾛ', 'ᾜ', 'ᾝ', 'ᾞ', 'ᾟ', 'Ὴ', 'Ή', 'ῌ', 'Θ', 'Ι', 'Ί', 'Ϊ', 'Ἰ', 'Ἱ', 'Ἲ', 'Ἳ', 'Ἴ', 'Ἵ', 'Ἶ', 
     'Ἷ', 'Ῐ', 'Ῑ', 'Ὶ', 'Ί', 'Κ', 'Λ', 'Μ', 'Ν', 'Ξ', 'Ο', 'Ό', 'Ὀ', 'Ὁ', 'Ὂ', 'Ὃ', 'Ὄ', 'Ὅ', 'Ὸ', 'Ό', 'Π', 'Ρ', 'Ῥ', 'Σ', 'Τ', 'Υ', 'Ύ', 'Ϋ', 
     'Ὑ', 'Ὓ', 'Ὕ', 'Ὗ', 'Ῠ', 'Ῡ', 'Ὺ', 'Ύ', 'Φ', 'Χ', 'Ψ', 'Ω', 'Ώ', 'Ὠ', 'Ὡ', 'Ὢ', 'Ὣ', 'Ὤ', 'Ὥ', 'Ὦ', 'Ὧ', 'ᾨ', 'ᾩ', 'ᾪ', 'ᾫ', 'ᾬ', 'ᾭ', 
     'ᾮ', 'ᾯ', 'Ὼ', 'Ώ', 'ῼ', 'α', 'ά', 'ἀ', 'ἁ', 'ἂ', 'ἃ', 'ἄ', 'ἅ', 'ἆ', 'ἇ', 'ᾀ', 'ᾁ', 'ᾂ', 'ᾃ', 'ᾄ', 'ᾅ', 'ᾆ', 'ᾇ', 'ὰ', 'ά', 'ᾰ', 'ᾱ', 'ᾲ', 
     'ᾳ', 'ᾴ', 'ᾶ', 'ᾷ', 'β', 'γ', 'δ', 'ε', 'έ', 'ἐ', 'ἑ', 'ἒ', 'ἓ', 'ἔ', 'ἕ', 'ὲ', 'έ', 'ζ', 'η', 'ή', 'ἠ', 'ἡ', 'ἢ', 'ἣ', 'ἤ', 'ἥ', 'ἦ', 'ἧ', 'ᾐ', 
     'ᾑ', 'ᾒ', 'ᾓ', 'ᾔ', 'ᾕ', 'ᾖ', 'ᾗ', 'ὴ', 'ή', 'ῂ', 'ῃ', 'ῄ', 'ῆ', 'ῇ', 'θ', 'ι', 'ί', 'ϊ', 'ΐ', 'ἰ', 'ἱ', 'ἲ', 'ἳ', 'ἴ', 'ἵ', 'ἶ', 'ἷ', 'ὶ', 'ί', 'ῐ', 
     'ῑ', 'ῒ', 'ΐ', 'ῖ', 'ῗ', 'κ', 'λ', 'μ', 'ν', 'ξ', 'ο', 'ό', 'ὀ', 'ὁ', 'ὂ', 'ὃ', 'ὄ', 'ὅ', 'ὸ', 'ό', 'π', 'ρ', 'ῤ', 'ῥ', 'σ', 'ς', 'τ', 'υ', 'ύ', 
     'ϋ', 'ΰ', 'ὐ', 'ὑ', 'ὒ', 'ὓ', 'ὔ', 'ὕ', 'ὖ', 'ὗ', 'ὺ', 'ύ', 'ῠ', 'ῡ', 'ῢ', 'ΰ', 'ῦ', 'ῧ', 'φ', 'χ', 'ψ', 'ω', 'ώ', 'ὠ', 'ὡ', 'ὢ', 'ὣ', 'ὤ', 
     'ὥ', 'ὦ', 'ὧ', 'ᾠ', 'ᾡ', 'ᾢ', 'ᾣ', 'ᾤ', 'ᾥ', 'ᾦ', 'ᾧ', 'ὼ', 'ώ', 'ῲ', 'ῳ', 'ῴ', 'ῶ', 'ῷ', '¨', '΅', '᾿', '῾', '῍', '῝', '῎', '῞', '῏', '῟', 
     '῀', '῁', '΄', '΅', '`', '῭', 'ͺ', '᾽', 'А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ё', 'Ж', 'З', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р', 'С', 'Т', 'У', 'Ф', 
     'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ы', 'Э', 'Ю', 'Я', 'а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 
     'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ы', 'э', 'ю', 'я', 'Ъ', 'ъ', 'Ь', 'ь', 'ð', 'Ð', 'þ', 'Þ', 
     '\'','&','<','>','\'','\"'); 


    $replace = array(
     'a', 'a', 'a', 'a', 'ae', 'a', 'a', 'a', 'a', 'a', 'c', 'c', 'c', 'c', 'c', 'd', 'd', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'g', 'g', 
     'g', 'g', 'h', 'h', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'ij', 'j', 'k', 'k', 'k', 'k', 'k', 'l', 'n', 'n', 'n', 'n', 'n', 'o', 'o', 
     'o', 'o', 'oe', 'o', 'o', 'o', 'o', 'oe', 'r', 'r', 'r', 's', 's', 's', 's', 's', 't', 't', 't', 't', 'u', 'u', 'u', 'ue', 'u', 'u', 'u', 'u', 
     'u', 'u', 'w', 'y', 'y', 'y', 'z', 'z', 'z', 'a', 'a', 'a', 'a', 'ae', 'a', 'a', 'a', 'a', 'ae', 'c', 'c', 'c', 'c', 'c', 'd', 'd', 'e', 'e', 
     'e', 'e', 'e', 'e', 'e', 'e', 'e', 'f', 'g', 'g', 'g', 'g', 'h', 'h', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'ij', 'j', 'k', 'k', 'l', 
     'l', 'l', 'l', 'l', 'n', 'n', 'n', 'n', 'n', 'n', 'o', 'o', 'o', 'o', 'oe', 'o', 'o', 'o', 'o', 'oe', 'r', 'r', 'r', 's', 's', 's', 't', 't', 
     'u', 'u', 'u', 'ue', 'u', 'u', 'u', 'u', 'u', 'u', 'w', 'y', 'y', 'y', 'z', 'z', 'z', 'ss', 'ss', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 
     'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'b', 'g', 'd', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'z', 'i', 
     'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'th', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 
     'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'k', 'l', 'm', 'n', 'ks', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'p', 'r', 'r', 's', 't', 
     'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'f', 'x', 'ps', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 
     'o', 'o', 'o', 'o', 'o', 'o', 'o', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 
     'a', 'a', 'a', 'a', 'a', 'b', 'g', 'd', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'z', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 
     'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'th', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 
     'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'k', 'l', 'm', 'n', 'ks', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'p', 'r', 'r', 'r', 's', 
     's', 't', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'f', 'x', 'ps', 'o', 'o', 'o', 
     'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', '', '', '', '', '', '', '', '', '', 
     '', '', '', '', '', '', '', '', '', 'a', 'b', 'v', 'g', 'd', 'e', 'e', 'zh', 'z', 'i', 'i', 'k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'u', 'f', 
     'kh', 'ts', 'ch', 'sh', 'shch', 'y', 'e', 'yu', 'ya', 'a', 'b', 'v', 'g', 'd', 'e', 'e', 'zh', 'z', 'i', 'i', 'k', 'l', 'm', 'n', 'o', 'p', 
     'r', 's', 't', 'u', 'f', 'kh', 'ts', 'ch', 'sh', 'shch', 'y', 'e', 'yu', 'ya', '', '', '', '', 'd', 'd', 'th', 'th', 
     '','&amp;','&lt;','&gt;','&apos;','&quot;'); 

    $str = str_replace($search, $replace, $str); 
    return $str; 
} 

Затем я использую эту функцию на каждом отдельном поле я тянуть из базы данных в oci_fetch_array метод. Пример:

function validate_data($array){ 
while($row=oci_fetch_array($array, OCI_ASSOC+OCI_RETURN_NULLS)){ 
    { 
    //VALIDATE ALL NON ASCII CHARACTERS 
    if(isset($row["UNIQUE ID"])){ 
     $uniqueID=$row["UNIQUE ID"]; 
     $uniqueID=replaceASCII($uniqueID); 
    } 
    if(isset($row["LAST NAME"])){ 
    $lastname=$row["LAST NAME"]; 
    $lastname=replaceASCII($lastname); 
    } 

И тогда я использую эти новые переменные при записи файла, как это:

fwrite($requestfile,'<contact contactID="'.$uniqueID.'" action="AddOrModify">'); 

По какой-то причине, только некоторые части кода меняются, но и другие буквы с акцентами являются осталось. Например, все экземпляры «&» успешно заменяются на «&», но все «í» остаются в файле XML. Есть идеи?

EDIT

Я просто попытался использовать ту же функцию в тестовый файл, и он работал прекрасно с этим кодом:

<?php 
function replaceASCII($str) { 
    $search = array(
     'À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'Æ', 'Ā', 'Ą', 'Ă', 'Ç', 'Ć', 'Č', 'Ĉ', 'Ċ', 'Ď', 'Đ', 'È', 'É', 'Ê', 'Ë', 'Ē', 'Ę', 'Ě', 'Ĕ', 'Ė', 'Ĝ', 'Ğ', 'Ġ', 
     'Ģ', 'Ĥ', 'Ħ', 'Ì', 'Í', 'Î', 'Ï', 'Ī', 'Ĩ', 'Ĭ', 'Į', 'İ', 'IJ', 'Ĵ', 'Ķ', 'Ľ', 'Ĺ', 'Ļ', 'Ŀ', 'Ł', 'Ñ', 'Ń', 'Ň', 'Ņ', 'Ŋ', 'Ò', 'Ó', 'Ô', 'Õ', 
     'Ö', 'Ø', 'Ō', 'Ő', 'Ŏ', 'Œ', 'Ŕ', 'Ř', 'Ŗ', 'Ś', 'Ş', 'Ŝ', 'Ș', 'Š', 'Ť', 'Ţ', 'Ŧ', 'Ț', 'Ù', 'Ú', 'Û', 'Ü', 'Ū', 'Ů', 'Ű', 'Ŭ', 'Ũ', 'Ų', 'Ŵ', 
     'Ŷ', 'Ÿ', 'Ý', 'Ź', 'Ż', 'Ž', 'à', 'á', 'â', 'ã', 'ä', 'ā', 'ą', 'ă', 'å', 'æ', 'ç', 'ć', 'č', 'ĉ', 'ċ', 'ď', 'đ', 'è', 'é', 'ê', 'ë', 'ē', 'ę', 
     'ě', 'ĕ', 'ė', 'ƒ', 'ĝ', 'ğ', 'ġ', 'ģ', 'ĥ', 'ħ', 'ì', 'í', 'î', 'ï', 'ī', 'ĩ', 'ĭ', 'į', 'ı', 'ij', 'ĵ', 'ķ', 'ĸ', 'ł', 'ľ', 'ĺ', 'ļ', 'ŀ', 'ñ', 
     'ń', 'ň', 'ņ', 'ʼn', 'ŋ', 'ò', 'ó', 'ô', 'õ', 'ö', 'ø', 'ō', 'ő', 'ŏ', 'œ', 'ŕ', 'ř', 'ŗ', 'ś', 'š', 'ş', 'ť', 'ţ', 'ù', 'ú', 'û', 'ü', 'ū', 'ů', 
     'ű', 'ŭ', 'ũ', 'ų', 'ŵ', 'ÿ', 'ý', 'ŷ', 'ż', 'ź', 'ž', 'ß', 'ſ', 'Α', 'Ά', 'Ἀ', 'Ἁ', 'Ἂ', 'Ἃ', 'Ἄ', 'Ἅ', 'Ἆ', 'Ἇ', 'ᾈ', 'ᾉ', 'ᾊ', 'ᾋ', 'ᾌ', 
     'ᾍ', 'ᾎ', 'ᾏ', 'Ᾰ', 'Ᾱ', 'Ὰ', 'Ά', 'ᾼ', 'Β', 'Γ', 'Δ', 'Ε', 'Έ', 'Ἐ', 'Ἑ', 'Ἒ', 'Ἓ', 'Ἔ', 'Ἕ', 'Έ', 'Ὲ', 'Ζ', 'Η', 'Ή', 'Ἠ', 'Ἡ', 'Ἢ', 
     'Ἣ', 'Ἤ', 'Ἥ', 'Ἦ', 'Ἧ', 'ᾘ', 'ᾙ', 'ᾚ', 'ᾛ', 'ᾜ', 'ᾝ', 'ᾞ', 'ᾟ', 'Ὴ', 'Ή', 'ῌ', 'Θ', 'Ι', 'Ί', 'Ϊ', 'Ἰ', 'Ἱ', 'Ἲ', 'Ἳ', 'Ἴ', 'Ἵ', 'Ἶ', 
     'Ἷ', 'Ῐ', 'Ῑ', 'Ὶ', 'Ί', 'Κ', 'Λ', 'Μ', 'Ν', 'Ξ', 'Ο', 'Ό', 'Ὀ', 'Ὁ', 'Ὂ', 'Ὃ', 'Ὄ', 'Ὅ', 'Ὸ', 'Ό', 'Π', 'Ρ', 'Ῥ', 'Σ', 'Τ', 'Υ', 'Ύ', 'Ϋ', 
     'Ὑ', 'Ὓ', 'Ὕ', 'Ὗ', 'Ῠ', 'Ῡ', 'Ὺ', 'Ύ', 'Φ', 'Χ', 'Ψ', 'Ω', 'Ώ', 'Ὠ', 'Ὡ', 'Ὢ', 'Ὣ', 'Ὤ', 'Ὥ', 'Ὦ', 'Ὧ', 'ᾨ', 'ᾩ', 'ᾪ', 'ᾫ', 'ᾬ', 'ᾭ', 
     'ᾮ', 'ᾯ', 'Ὼ', 'Ώ', 'ῼ', 'α', 'ά', 'ἀ', 'ἁ', 'ἂ', 'ἃ', 'ἄ', 'ἅ', 'ἆ', 'ἇ', 'ᾀ', 'ᾁ', 'ᾂ', 'ᾃ', 'ᾄ', 'ᾅ', 'ᾆ', 'ᾇ', 'ὰ', 'ά', 'ᾰ', 'ᾱ', 'ᾲ', 
     'ᾳ', 'ᾴ', 'ᾶ', 'ᾷ', 'β', 'γ', 'δ', 'ε', 'έ', 'ἐ', 'ἑ', 'ἒ', 'ἓ', 'ἔ', 'ἕ', 'ὲ', 'έ', 'ζ', 'η', 'ή', 'ἠ', 'ἡ', 'ἢ', 'ἣ', 'ἤ', 'ἥ', 'ἦ', 'ἧ', 'ᾐ', 
     'ᾑ', 'ᾒ', 'ᾓ', 'ᾔ', 'ᾕ', 'ᾖ', 'ᾗ', 'ὴ', 'ή', 'ῂ', 'ῃ', 'ῄ', 'ῆ', 'ῇ', 'θ', 'ι', 'ί', 'ϊ', 'ΐ', 'ἰ', 'ἱ', 'ἲ', 'ἳ', 'ἴ', 'ἵ', 'ἶ', 'ἷ', 'ὶ', 'ί', 'ῐ', 
     'ῑ', 'ῒ', 'ΐ', 'ῖ', 'ῗ', 'κ', 'λ', 'μ', 'ν', 'ξ', 'ο', 'ό', 'ὀ', 'ὁ', 'ὂ', 'ὃ', 'ὄ', 'ὅ', 'ὸ', 'ό', 'π', 'ρ', 'ῤ', 'ῥ', 'σ', 'ς', 'τ', 'υ', 'ύ', 
     'ϋ', 'ΰ', 'ὐ', 'ὑ', 'ὒ', 'ὓ', 'ὔ', 'ὕ', 'ὖ', 'ὗ', 'ὺ', 'ύ', 'ῠ', 'ῡ', 'ῢ', 'ΰ', 'ῦ', 'ῧ', 'φ', 'χ', 'ψ', 'ω', 'ώ', 'ὠ', 'ὡ', 'ὢ', 'ὣ', 'ὤ', 
     'ὥ', 'ὦ', 'ὧ', 'ᾠ', 'ᾡ', 'ᾢ', 'ᾣ', 'ᾤ', 'ᾥ', 'ᾦ', 'ᾧ', 'ὼ', 'ώ', 'ῲ', 'ῳ', 'ῴ', 'ῶ', 'ῷ', '¨', '΅', '᾿', '῾', '῍', '῝', '῎', '῞', '῏', '῟', 
     '῀', '῁', '΄', '΅', '`', '῭', 'ͺ', '᾽', 'А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ё', 'Ж', 'З', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р', 'С', 'Т', 'У', 'Ф', 
     'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ы', 'Э', 'Ю', 'Я', 'а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 
     'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ы', 'э', 'ю', 'я', 'Ъ', 'ъ', 'Ь', 'ь', 'ð', 'Ð', 'þ', 'Þ', 
     '\'','&','<','>','\'','\"'); 


    $replace = array(
     'a', 'a', 'a', 'a', 'ae', 'a', 'a', 'a', 'a', 'a', 'c', 'c', 'c', 'c', 'c', 'd', 'd', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'g', 'g', 
     'g', 'g', 'h', 'h', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'ij', 'j', 'k', 'k', 'k', 'k', 'k', 'l', 'n', 'n', 'n', 'n', 'n', 'o', 'o', 
     'o', 'o', 'oe', 'o', 'o', 'o', 'o', 'oe', 'r', 'r', 'r', 's', 's', 's', 's', 's', 't', 't', 't', 't', 'u', 'u', 'u', 'ue', 'u', 'u', 'u', 'u', 
     'u', 'u', 'w', 'y', 'y', 'y', 'z', 'z', 'z', 'a', 'a', 'a', 'a', 'ae', 'a', 'a', 'a', 'a', 'ae', 'c', 'c', 'c', 'c', 'c', 'd', 'd', 'e', 'e', 
     'e', 'e', 'e', 'e', 'e', 'e', 'e', 'f', 'g', 'g', 'g', 'g', 'h', 'h', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'ij', 'j', 'k', 'k', 'l', 
     'l', 'l', 'l', 'l', 'n', 'n', 'n', 'n', 'n', 'n', 'o', 'o', 'o', 'o', 'oe', 'o', 'o', 'o', 'o', 'oe', 'r', 'r', 'r', 's', 's', 's', 't', 't', 
     'u', 'u', 'u', 'ue', 'u', 'u', 'u', 'u', 'u', 'u', 'w', 'y', 'y', 'y', 'z', 'z', 'z', 'ss', 'ss', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 
     'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'b', 'g', 'd', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'z', 'i', 
     'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'th', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 
     'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'k', 'l', 'm', 'n', 'ks', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'p', 'r', 'r', 's', 't', 
     'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'f', 'x', 'ps', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 
     'o', 'o', 'o', 'o', 'o', 'o', 'o', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 
     'a', 'a', 'a', 'a', 'a', 'b', 'g', 'd', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'z', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 
     'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'th', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 
     'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'k', 'l', 'm', 'n', 'ks', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'p', 'r', 'r', 'r', 's', 
     's', 't', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'f', 'x', 'ps', 'o', 'o', 'o', 
     'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', '', '', '', '', '', '', '', '', '', 
     '', '', '', '', '', '', '', '', '', 'a', 'b', 'v', 'g', 'd', 'e', 'e', 'zh', 'z', 'i', 'i', 'k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'u', 'f', 
     'kh', 'ts', 'ch', 'sh', 'shch', 'y', 'e', 'yu', 'ya', 'a', 'b', 'v', 'g', 'd', 'e', 'e', 'zh', 'z', 'i', 'i', 'k', 'l', 'm', 'n', 'o', 'p', 
     'r', 's', 't', 'u', 'f', 'kh', 'ts', 'ch', 'sh', 'shch', 'y', 'e', 'yu', 'ya', '', '', '', '', 'd', 'd', 'th', 'th', 
     '','&amp;','&lt;','&gt;','&apos;','&quot;'); 

    $str = str_replace($search, $replace, $str); 
    return $str; 
} 

$string="François &<> Cédric"; 
echo $string . "<br>"; 
$string=replaceASCII($string); 
echo $string; 
$file=fopen('C:\Users\ps526695\Documents\ContactExports\test\test_request.xml','w'); 
fwrite($file,$string); 
//echo iconv('UTF-8', 'ASCII//TRANSLIT', $string); 
?> 

Теперь я не знаю, почему оно не работает для файла производства ?

+0

Я хотел бы также добавить, что я попытался с помощью метода inconv с подобными проблемами. – ITProblems

+0

Возможно, это связано с использованием комбинированных символов. Например, ваш 'í' может быть одним символом или' i' с комбинирующим символом '' '. Если у вас есть одна версия в вашем массиве, а другая в файле XML, замена не будет работать. См. Https://en.wikipedia.org/wiki/Combining_character – GolezTrol

+0

Хм, не подумал об этом. Любая идея, как справиться с этими случаями? – ITProblems

ответ

1

Я думаю, что это связано с использованием combining characters. Например, ваш í может быть единственным символом или i с комбинирующим символом '. Если у вас есть одна версия в вашем массиве, а другая в файле XML, замена не будет работать.

PHP имеет класс с именем «Нормализатор», который обрабатывает это. Класс содержит два статических метода, один для проверки нормализации строки, а другой для нормализации строки для одной из различных нормализованных форм, определяемой консорциумом Unicode.

Я не использовал этот класс сам, но, похоже, он работает просто как это:

$str = Normalizer::normalize($str); 

Если по-прежнему не работает, убедитесь, что символы в массиве также нормализуется. Вы должны использовать для этого Normalizer::isNormalized().

См: http://php.net/manual/en/class.normalizer.php

Смежные вопросы