2013-05-19 38 views
3

Transliterator::listIDs()將列出ID,但顯然它不是一個完整的列表。我在哪裏可以找到PHP音譯器(Intl)的ID或規則列表?

example from this page,該ID是這樣的:

Any-Latin; NFD; [:Nonspacing Mark:] Remove; NFC; [:Punctuation:] Remove; Lower(); 

這是一種奇怪的,因爲標識應該是唯一的。這看起來更像是一個規則,但它不起作用,如果我將它傳遞給createFromRules方法:)

無論如何,我試圖從字符串中刪除任何標點符號,除了破折號(-)或字符一個特定的列表。

你知道這可能嗎?還是有一些文檔能更好地解釋音譯器的語法?

回答

2

Transliterator::listIDs()是「基本ID」的ID。你給的例子是一個「複合id」。你可以看到ICU docs on this

您也可以使用Transliterator::createFromRules()創建自己的規則。

你可以看看prefefined規則(與你的ICU版本替換48):

<?php 
$a = new ResourceBundle(NULL, 'icudt48l-translit', true); 

foreach ($a['RuleBasedTransliteratorIDs'] as $name => $v) { 
    $file = @$v['file']; 
    if (!$file) { 
     $file = $v['internal']; 
     echo $name, " (direction $file[direction]; internal)\n"; 
    } else { 
     echo $name, " (direction: $file[direction])\n"; 
     echo $file['resource']; 
    } 
    echo "\n--------------\n"; 
} 

格式化後,結果看起來像this

+1

友情提醒:這是一個非常強烈的.txt文件,對於內存不足的機器,Chrome和崇高的文本可能會停止響應處理它... – bitinn

相關問題