PHP UTF-8来自以处理字符命名的数组

PHP UTF-8来自以处理字符命名的数组,php,utf-8,Php,Utf 8,我是新来的,这是我的第一个问题。 我试图确定在给定的文本中,在给定的字符之后最常见的字母是什么。 为此,我创建了从处理过的字母命名的数组。 PHP版本5.5.9-1ubuntu4.17 默认字符集UTF-8 在样本文本进入数组之前,正确显示,但取自数组显示� 我做错了什么? ... 这是我学习PHP的第一步,请原谅 测试HTML 您需要使用多字节函数,如下所示: echo "test PHP"; echo "<br />(...)<br />"; $line=('ab

我是新来的,这是我的第一个问题。 我试图确定在给定的文本中,在给定的字符之后最常见的字母是什么。 为此,我创建了从处理过的字母命名的数组。 PHP版本5.5.9-1ubuntu4.17 默认字符集UTF-8 在样本文本进入数组之前,正确显示,但取自数组显示� 我做错了什么? ... 这是我学习PHP的第一步,请原谅


测试HTML

您需要使用多字节函数,如下所示:

echo "test PHP";
echo "<br />(...)<br />";
$line=('abadańasakąaazaąaśaćałóańąaęażaź→↓←aß©ęœaπąśðæŋ’ə…ł≤µń”„aćaźż');
$strlen = mb_strlen($line);
for ($i=0; $i<$strlen; $i++)
{
    $char = mb_substr($line, $i, 1);
    $char2 = mb_substr($line, $i+1, 1);
    echo $char;  // all characters looks fine here

    if (empty(${'sign_'.$char}[$char2]))
    {
        ${'sign_'.$char}[$char2]=1;
    }
    else
    {
        ${'sign_'.$char}[$char2]++;
    }

}

echo "<br />(...)<br />";
arsort ($sign_a);
echo "most frequent character after letter / a / is: <br />";
foreach ($sign_a as $key => $val)
{
    echo " ... $key=$val "; // and here we have mess
}
echo "<br />(...)<br />";
echo“测试PHP”;
回声“
(…)
”; $line=('abadaôasakąaazaąaśaćałaąaƄaź→↓←aßęœaπąśðæŋə……ł≤êê“aćaźż”); $strlen=mb_strlen($line); 对于($i=0;$i$val) { echo“…$key=$val”//这是一团混乱 } 回声“
(…)
”;
请注意
mb_strlen()
mb_substr()
函数。 见:


我现在的输出是:
。。。ń=2 ... ć=2 ... ź=2 ... b=1。。。d=1。。。s=1。。。k=1。。。a=1。。。z=1。。。ą=1 ... ś=1 ... ł=1 ... ę=1 ... ż=1 ... ß=1 ... π=1

您需要使用多字节函数,如下所示:

echo "test PHP";
echo "<br />(...)<br />";
$line=('abadańasakąaazaąaśaćałóańąaęażaź→↓←aß©ęœaπąśðæŋ’ə…ł≤µń”„aćaźż');
$strlen = mb_strlen($line);
for ($i=0; $i<$strlen; $i++)
{
    $char = mb_substr($line, $i, 1);
    $char2 = mb_substr($line, $i+1, 1);
    echo $char;  // all characters looks fine here

    if (empty(${'sign_'.$char}[$char2]))
    {
        ${'sign_'.$char}[$char2]=1;
    }
    else
    {
        ${'sign_'.$char}[$char2]++;
    }

}

echo "<br />(...)<br />";
arsort ($sign_a);
echo "most frequent character after letter / a / is: <br />";
foreach ($sign_a as $key => $val)
{
    echo " ... $key=$val "; // and here we have mess
}
echo "<br />(...)<br />";
echo“测试PHP”;
回声“
(…)
”; $line=('abadaôasakąaazaąaśaćałaąaƄaź→↓←aßęœaπąśðæŋə……ł≤êê“aćaźż”); $strlen=mb_strlen($line); 对于($i=0;$i$val) { echo“…$key=$val”//这是一团混乱 } 回声“
(…)
”;
请注意
mb_strlen()
mb_substr()
函数。 见:


我现在的输出是:
。。。ń=2 ... ć=2 ... ź=2 ... b=1。。。d=1。。。s=1。。。k=1。。。a=1。。。z=1。。。ą=1 ... ś=1 ... ł=1 ... ę=1 ... ż=1 ... ß=1 ... π=1 < /代码> 

除了使用多字节函数Mb**之外,还应考虑在运行时不通过评估(潜在的可疑)输入来创建数组名称。 相反,只需使用二维数组将字母计数存储为矩阵
$chars[letter][trailingLetter]

例如:

  | a | b | c | < letter
a | - | - | - |
b | 1 | - | 1 | 
c | - | 2 | - |
^
trailingLetter

除了使用多字节函数Mb**之外,还应该考虑在运行时不通过评估(潜在的可疑)输入来创建数组名称。 相反,只需使用二维数组将字母计数存储为矩阵

$chars[letter][trailingLetter]

例如:

  | a | b | c | < letter
a | - | - | - |
b | 1 | - | 1 | 
c | - | 2 | - |
^
trailingLetter

可能重复的可能重复的可能重复的谢谢你们,我被介绍给Zend多字节扩展和PHP配置文件,用于UTF-8编码,这打开了我的代码。关于多维数组的概念也引起了我的兴趣:)谢谢你们,我了解了Zend Multibyte扩展名和用于UTF-8编码的PHP配置文件,它开启了我的代码。关于多维数组的概念也在我的脑海中浮现:)