我正在编写一个函数,用于清理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
}
}
调试行在那里,所以我可以在浏览器中看到它返回的值。它每次都返回字符串中的第一个字符。
答案 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]