PHP将umlauts从“ue”转换为“ü”

5

有没有一种方法可以将表示为ae,Ae,oe,Oe,ue,Uess的umlauts转换回原始的umlauts?重要的是要观察拼写规则,例如术语“teuer”中的拼写不应更改为“teür”。谢谢!


6
不,我认为不是这样的。你需要一本包含所有例外情况的词典。 - Sascha Galley
1
你需要一个包含所有可接受单词的字典来进行转换,并确保不会转换部分单词(例如“clbuttic”)。 - Andrew
“回到原始的umlauts” - 你一开始是在转换它们吗?听起来你可以只保留信息。 - Dave
1
我的德语有点生疏,但从记忆中大多数情况下都有明确定义的规则([元音][元音]e不变,[辅音][元音]e会改变,[单词开头][元音]e也会改变等),因此像这样(在正则表达式中)/^[^aeiou]?[aeiou]e/可以匹配大多数情况。你仍然需要一个包含特定例外的字典,但一般情况下就可以覆盖大部分情况。 - Sysyphus
3个回答

3
iconv("utf-8","ascii//TRANSLIT",$input);

扩展的 示例

或者

echo strtr(utf8_decode($input), 
           utf8_decode('ŠŒŽšœžŸ¥µÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿ'),
           'SOZsozYYuAAAAAAACEEEEIIIIDNOOOOOOUUUUYsaaaaaaaceeeeiiiionoooooouuuuyy');

请参考这个问题。

0

我建议您将每个“ue”、“oe”等出现的排列组合都转换一下。 每个排列组合指的是,如果有3个出现,首先只替换第一个,然后只替换第二个,然后只替换第三个,然后替换第一个和第二个等等。

接下来,检查结果是否包含在标准拼写检查字典中。这样做可以避免为例外情况创建自己的字典。

例如,可以在ftp://ftp.ox.ac.uk/pub/wordlists/german/words.german.Z上找到单词列表。


0

这将是相当棘手的。肯定没有内置函数可以做到这一点。

我看到的大多数示例都是相反的(即使用带有重音字符的字符串并用它们的ASCII等效项替换它们)。在我看到它被完成的地方,总是提供一个字符映射及其等效项,并扫描字符串进行替换。

PHP手册页面strtr()函数上有一些很好的示例,说明您需要做的事情,但您要避免特定的异常要求将使整个过程变得非常复杂。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接