Php str_替换为";“坟墓”;口音

Php str_替换为";“坟墓”;口音,php,Php,我正在开发一个网站,我想从数据库打印一些信息。我发现了一个问题,即带有“严重”重音的信息不可能转换为大写 例如,我有以下信息:John Serán Mollò,我需要将其转换为大写。这应该是结果:约翰·塞伦·莫尔 我正在尝试以下代码: $filtre = array("&agrave", "&egrave", "&ograve"); $modificacions = array("a", "e", "o");

我正在开发一个网站,我想从数据库打印一些信息。我发现了一个问题,即带有“严重”重音的信息不可能转换为大写

例如,我有以下信息:John Serán Mollò,我需要将其转换为大写。这应该是结果:约翰·塞伦·莫尔

我正在尝试以下代码:

            $filtre = array("&agrave", "&egrave", "&ograve");
            $modificacions = array("a", "e", "o");
            $phrase = str_replace($filtre, $modificacions, $vols[$i]['crew']);
            var_dump($phrase);
            echo strtoupper($phrase); ?>
在这种情况下,结果应该是JOHN SERAN MOLLO(没有口音),但我得到了这个:JOHN SERáN MOLLò


我做了什么坏事?我怎样才能得到JOHN SERAN MOLLO(没有重音符号),或者,如果可能的话,我怎样才能得到JOHN SERÀN MOLLÒ(大写重音符号)。

如果您的安装加载了扩展名(根据我的经验,大多数是这样),您应该能够使用,例如

默认情况下,这将使用默认的内部编码,因此这应该是您所需要的全部,但是您可能还需要提供第二个参数来指定字符串编码

如果函数不可用,这里有一个polyfill可用:

使用strtoupper()函数或mb_strtoupper()函数。哇哈,试试这个。。。祝您今天过得愉快。。。西娅

<?php

setlocale(LC_CTYPE, 'de_DE.UTF8');

echo strtoupper('Umlaute äöü in uppercase'); // outputs "UMLAUTE äöü IN UPPERCASE"
echo mb_strtoupper('Umlaute äöü in uppercase', 'UTF-8'); // outputs "UMLAUTE ÄÖÜ IN UPPERCASE"

?>


a
a
不一样。将
a
添加到
$modifications
数组为什么不直接将
a
替换为
等?(如果应用程序中的编码是一致的)为什么要将实体与字符串进行比较?当然,这就是它不起作用的原因。可能是重复的。你试过
mb\u strotupper
吗?
<?php

setlocale(LC_CTYPE, 'de_DE.UTF8');

echo strtoupper('Umlaute äöü in uppercase'); // outputs "UMLAUTE äöü IN UPPERCASE"
echo mb_strtoupper('Umlaute äöü in uppercase', 'UTF-8'); // outputs "UMLAUTE ÄÖÜ IN UPPERCASE"

?>