如何在数组中使用str_replace或缩短正则表达式和php而不是重复三遍?

shi*_*hin 1 php regex

我有以下将å,ø,æ....等全部替换为_的代码。

$string = strtolower($string);
$regexp = '/( |å|ø|æ|Å|Ø|Æ|Ã¥|ø|æ|Ã…|Ø|Æ)/iU';
$replace_char = '_';
$data = preg_replace($regexp, $replace_char, $string);
Run Code Online (Sandbox Code Playgroud)

现在,我想根据以下内容将它们更改为。

更换,

_的空间

å,Å,Ã¥和Ã…到

ø,Ø,Ã和Ã〜¸到o,

æ,Æ,Ã和Ã至e。

我可以将str_replace与array一起使用吗?如果是,该怎么办?

还是我必须重复相同的正则表达式三遍?

谁能告诉我更好的代码编写方式?

- 编辑 -

恳求此刻忽略编码。我现在询问有关编码的建议。

我在这里问编码问题。挪威文字问题

Gum*_*mbo 5

我会使用strtr您可以传递一个映射:

$mapping = array(
    'å' => 'a', 'Å' => 'a', 'Ã¥' => 'a', 'Ã…' => 'a',
    'ø' => 'o', 'Ø' => 'o', 'Ã' => 'o', 'Ø' => 'o',
    'æ' => 'e', 'Æ' => 'e', 'æ' => 'e', 'Æ' => 'e'
);
$str = strtr($str, $mapping);
Run Code Online (Sandbox Code Playgroud)

但是您应该宁愿先解决编码问题。因为这样您可以将音译与一起使用iconv

$str = iconv("UTF-8", "ISO-8859-1//TRANSLIT", $str);
Run Code Online (Sandbox Code Playgroud)