PHP UTF-8来自以处理字符命名的数组
我是新来的,这是我的第一个问题。 我试图确定在给定的文本中,在给定的字符之后最常见的字母是什么。 为此,我创建了从处理过的字母命名的数组。 PHP版本5.5.9-1ubuntu4.17 默认字符集UTF-8 在样本文本进入数组之前,正确显示,但取自数组显示� 我做错了什么? ... 这是我学习PHP的第一步,请原谅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
测试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配置文件,它开启了我的代码。关于多维数组的概念也在我的脑海中浮现:)