我正在研究一种方法来解决用于在 PHP 中创建帐户的自动脚本中的特殊字符问题。由于电子邮件地址和其他地方不需要特殊字符,因此我试图摆脱它们,但在将它们提供给脚本之前我无法删除它们,因为用户名必须正确显示给其他用户。
示例:Jörgen Götz 应该获得电子邮件地址 jorgen.gotz@domain.com,但在用户数据库中,他的名字仍然应该是 Jörgen,他的姓氏应该是 Götz。我希望我不会不清楚我想要实现的目标。
我一直在尝试使用 iconv() 但我遇到了一些麻烦。请参阅下面的代码。
$utf8_sentence = '魏斯、戈德曼、哥贝尔、魏斯、歌德、歌德和哥茨';
setlocale(LC_ALL, 'en_GB');
echo $trans_sentence = iconv('UTF-8', 'ASCII//TRANSLIT', $utf8_sentence);
上面的代码应该返回
魏斯、戈德曼、戈贝尔、魏斯、歌德、歌德和戈茨
但相反它给了我
Weiss, Goldmann, G"obel, Weiss, G"othe, Goethe und G"otz
我无法理解报价在那里做了什么。
Chrome 和 IE 都给了我相同的结果,并且页面使用 charset="utf-8"。
在使用 iconv() 之前,我尝试将 strtr() 与“不需要的”字符数组一起使用,但我不喜欢每次需要来回转换字符串时都必须设置特殊字符数组的解决方案。
任何人都可以提供解释或解决方案吗?