2013-02-05 137 views
1

WORDPHP /替換非拉丁字符

AŠA 

PHP

<?php 

foreach (glob("*.jpg") as $filename) { 
    $search = array("Š"); 
    $replace = array("S"); 

    $newname = str_replace($search, $replace, $filename); 
    echo $filename.'<br>'.$newname; 

    //($filename, realpath(dirname(__FILE__)).'/'.$newname); 
} 

問題 它不會在單詞替換字符 「S」, 「ASA」

+1

它的工作...! http://codepad.org/kpM4S68O –

回答

8

看看iconv()它允許您將字符串轉換爲指定的編碼。

例如,對於你的情況:

$str = 'AŠA'; 
$str = iconv('UTF-8', 'ASCII//TRANSLIT', $str); // ASA 
2

以前的方法不具有拉丁字符的工作,如U或AEIOU返回「a'e'i'o'u代替AEIOU。

transliterator_transliterate怎麼樣。適用於PHP> = 5.4

$str = 'AŠAáéíóú';  
transliterator_transliterate('Any-Latin; Latin-ASCII;', $str); //ASAaeiou 

Reference PHP NET: transliterator_transliterate

+0

當我反覆使用音譯器時,它每隔一段時間都會隨機失敗......給出超過120秒的最大執行時間。 –

+0

@JasonEngage錯誤可能是由於腳本中的另一個進程造成的,它不會花費那麼長時間。工作示例:[link](https://www.tehplayground.com/KHuBnhLTd3i2XznO) –

+0

php錯誤指向 $ transliterator = Transliterator :: createFromRules(':: Any-Latin; :: Latin-ASCII; :: NFD; :: [:Nonspacing Mark:] Remove; :: Lower(); :: NFC;',Transliterator :: FORWARD); 它只發生在10,000次,但它會導致致命的錯誤。我會包裹在一個嘗試,但它可能無法捕捉它... –