我正在研究一种方法来解决在 PHP 中创建帐户的自动脚本中使用特殊字符的问题。由于电子邮件地址和其他地方不需要特殊字符,因此我试图删除它们,但在将它们提供给脚本之前我无法删除它们,因为用户名必须正确显示给其他用户。
例子:
Jörgen Götz 应该获取电子邮件地址[电子邮件受保护] /cdn-cgi/l/email-protection但在用户数据库中,他的名字仍应为 Jörgen,姓氏为 Götz。我希望我不会不清楚我想要实现什么。
我一直在尝试 iconv() 但遇到了一些麻烦。请参阅下面的代码。
$utf8_sentence = 'Weiß、Goldmann、Göbel、Weiss、Göthe、Goethe und Götz';
setlocale(LC_ALL, 'en_GB');
echo $trans_sentence = iconv('UTF-8', 'ASCII//TRANSLIT', $utf8_sentence);
上面的代码应该返回
韦斯、戈德曼、戈贝尔、韦斯、歌德、歌德与戈兹
但它给了我
韦斯、戈德曼、戈贝尔、韦斯、戈德、歌德和戈兹
我无法理解那里的报价是做什么的。
Chrome 和 IE 都给出了相同的结果,并且页面使用 charset="utf-8"。
在使用 iconv() 之前,我尝试将 strtr() 与“不需要的”字符数组一起使用,但我不喜欢每次需要来回转换字符串时都必须设置特殊字符数组的解决方案。
谁能提供解释或解决方案?
尝试将其添加到您的系统(Ubuntu 中的终端):
sudo locale-gen de_DE.UTF-8
然后更改 php 脚本的区域设置:
setlocale(LC_ALL, 'de_DE.UTF-8');
编辑(Windows 设置)
在 Windows Server 中,您必须安装德语语言包并将上面的更改为:
setlocale(LC_ALL, 'germany');
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)