如何从文本中删除变音符号?
我正在制作一个瑞典语网站,瑞典语字母是 å、ä 和 ö。
我需要使用户输入的字符串成为 PHP 的 url 安全。
基本上,需要将所有字符转换为下划线,除了这些:
A-Z, a-z, 1-9
所有瑞典语都应该像这样转换:
'å' 到 'a' 和 'ä' 到 'a' 和 'ö' 到 'o' (只需删除上面的点)。
正如我所说,其余的应该变成下划线。
我不擅长正则表达式,所以我会感谢大家的帮助!
谢谢
注意:不是 URLENCODE...我需要将其存储在数据库中...等等,urlencode 对我不起作用。
I am making a swedish website, and swedish letters are å, ä, and ö.
I need to make a string entered by a user to become url-safe with PHP.
Basically, need to convert all characters to underscore, all EXCEPT these:
A-Z, a-z, 1-9
and all swedish should be converted like this:
'å' to 'a' and 'ä' to 'a' and 'ö' to 'o' (just remove the dots above).
The rest should become underscores as I said.
Im not good at regular expressions so I would appreciate the help guys!
Thanks
NOTE: NOT URLENCODE...I need to store it in a database... etc etc, urlencode wont work for me.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
这应该很有用,可以处理几乎所有情况。
This should be useful which handles almost all the cases.
使用 iconv 将字符串从给定编码转换为 ASCII,然后替换使用 preg_replace 的非字母数字字符:
结果:
Use iconv to convert strings from a given encoding to ASCII, then replace non-alphanumeric characters using preg_replace:
Result:
使用
normalizer_normalize()
摆脱 变音符号。使用
preg_replace()
的模式为[\W]
(iow:任何不匹配字母、数字或下划线的字符)用下划线替换它们。最终结果应如下所示:
Use
normalizer_normalize()
to get rid of diacritical marks.Use
preg_replace()
with a pattern of[\W]
(i.o.w: any character which doesn't match letters, digits or underscore) to replace them by underscores.Final result should look like:
如果启用了 intl php 扩展,您可以像这样使用 Transliterator :
删除其他特殊字符(不仅仅是像“æ”这样的变音符号)
If intl php extension is enabled, you can use Transliterator like this :
To remove other special chars (not diacritics only like 'æ')
如果您只是想让 URL 安全,那么您需要
urlencode
。如果你真的想删除所有非 AZ、az、1-9(顺便问一下,
0
有什么问题吗?),那么你想要:If you're just interested in making things URL safe, then you want
urlencode
.If you really want to strip all non A-Z, a-z, 1-9 (what's wrong with
0
, by the way?), then you want:就像
假设您对数据和代码使用相同的编码一样简单。
as simple as
assuming you use the same encoding for your data and your code.
一种简单的解决方案是使用 str_replace 函数进行搜索和替换字母数组。
One simple solution is to use str_replace function with search and replace letter arrays.
您不需要花哨的正则表达式来过滤瑞典字符,只需使用 strtr 函数 来“翻译”它们,例如:
->output: www.maao.com :)
You don't need fancy regexps to filter the swedish chars, just use the strtr function to "translate" them, like:
->output: www.maao.com :)