音译另一种语言的搜索词

时间:2019-02-26 作者:scooterlord

我一直在到处搜索,以找到一种方法,在开始用另一种语言(尤其是希腊语)搜索之前,先将搜索词音译。因此,我希望用希腊语(英语中的希腊语)编写的术语可以搜索为:

搜索词“原样”or 用希腊字母音译的搜索词我正在考虑使用搜索词str_replace 替换字符,但同一字符可能有不同的变体。如何解决这个问题有什么想法吗?

1 个回复
SO网友:Tim

如果你有PHPIntl extension 安装后,您可以使用精彩Transliterator class.

我得到了一些很好的结果,比如:

$t = Transliterator::create(\'Latin-Greek\', Transliterator::FORWARD );

var_dump( [
    \'alfa\' => $t->transliterate(\'alfa\'),
    \'alpha\' => $t->transliterate(\'alpha\'),
] );
这两种贪婪的形式给了我"άλφα". 我不知道它怎么知道该把口音放在哪里,但它给人留下了深刻的印象。

一旦有了希腊语脚本,剩下的细微差别应该由数据库排序来处理。“α”将匹配“ά”,而“σ”甚至将匹配“ς”(这在我运行排序规则为utf8mb4\\U unicode\\U 520\\U ci的MySQL的系统上运行)

如果您没有这个扩展,或者底层ICU库不可用,那么您可以自己扩展字符,但音译是hard 所以我不推荐它。

相关推荐

如何将变量传递给Get_Search_Form()?

是否可以将变量传递给get_search_form()? 我在两个地方使用它:一个在标题中,另一个在内容的搜索页面上。后者必须具有附加类,例如。search--full. 我试着用is_search() 但尽管它在其他页面上运行良好,但在搜索页面上,两种表单都有search--full 班