如何从文本中删除变音符号?

2022-08-30 22:31:32

我正在制作一个瑞典语网站,瑞典语字母是å,ä和ö。

我需要创建一个由用户输入的字符串,以便使用PHP成为url安全。

基本上,需要将所有字符转换为下划线,除了这些:

 A-Z, a-z, 1-9

所有瑞典语都应该像这样转换:

“å”到“a”,“ä”到“a”,“ö”到“o”(只需删除上面的点)。

正如我所说,其余的应该成为下划线。

我不擅长正则表达式,所以我会感谢帮助大家!

谢谢

注意:不是 URLENCODE...我需要将其存储在数据库中...等等,urlencode对我不起作用。


答案 1

这应该是有用的,可以处理几乎所有的情况。

function Unaccent($string)
{
    return preg_replace('~&([a-z]{1,2})(?:acute|cedil|circ|grave|lig|orn|ring|slash|th|tilde|uml|caron);~i', '$1', htmlentities($string, ENT_COMPAT, 'UTF-8'));
}

答案 2

使用 iconv 将字符串从给定编码转换为 ASCII,然后使用 preg_replace替换非字母数字字符:

$input = 'räksmörgås och köttbullar'; // UTF8 encoded
$input = iconv('UTF-8', 'ASCII//TRANSLIT', $input);
$input = preg_replace('/[^a-zA-Z0-9]/', '_', $input);
echo $input;

结果:

raksmorgas_och_kottbullar

推荐