$ string [i]不返回第i个字符

时间:2012-03-19 18:27:14

标签: php

我正在编写一个函数,用于清理PHP脚本将从外部源接收的格式不正确的字符串。这个字符串的问题是每个奇数字节都是零,所以该函数的作用是将每个偶数字节推送到一个新数组。 Code

$serverInfoClean = array();
for ($i = 0; $i < strlen($serverInfo); $i++ ) // Remove every odd numbered byte
{
    if ($i & 1) // Odd index
    {
        // Do nothing
    } 
    else // Even index
    {
        array_push($serverInfoClean, $serverInfo[i]);
        echo $i . ' ' . $serverInfo[i] . '<br/>'; // Debug
    }
}

调试行在那里,所以我可以在浏览器中看到它返回的值。它每次都返回字符串中的第一个字符。

3 个答案:

答案 0 :(得分:2)

$serverInfoClean = array();
$end = strlen($serverInfo);
for ($i = 0; $i < $end; $i++ ) // Remove every odd numbered byte
{
    if ($i & 1) // Odd index
    {
            // Do nothing
    }
    else // Even index
    {
            array_push($serverInfoClean, $serverInfo[$i]);
            echo $i . ' ' . $serverInfo[$i] . '<br/>'; // Debug
    }
}

答案 1 :(得分:1)

我认为你不应该认为它是一个“格式不正确的字符串”。这听起来很像你的字符串被编码为UTF-16,因此它也适用于非ASCII(Unicode)字符。

您可以使用multibyte string functions来正确处理多字节字符。

答案 2 :(得分:0)

$serverInfo[i]替换为$serverInfo[$i]