我们有一个PHP响应脚本,它输出如下字符串:
BEGIN;
00000087;
data1A;data1B;data1C;
data2A;data2B;data2C;
data3A;data3B;data3C;
END;
正如您在第2行所看到的,响应的长度是在响应本身内发送的。 (响应长度稍后用于验证目的。)
目前我们用前导零填充响应长度,总长度为8个字符,以保持计算简单。所以代码看起来像这样:
$sBegin = "BEGIN;\n";
$sData = "data1A;data1B;data1C;\ndata2A;data2B;data2C;\ndata3A;data3B;data3C;\n";
$sEnd = "END;";
$iPadLength = 8;
$iResponseLength = strlen($sBegin) + strlen($sData) + strlen($sEnd) + $iPadLength + strlen(";\n");
$sResponse = $sBegin . str_pad($iResponseLength, $iPadLength, "0", STR_PAD_LEFT) . ";\n" . $sData . $sEnd;
echo $sResponse;
这个解决方案看起来很脏。大多数情况下,我不喜欢填充部分,因为响应数据可能会增长,填充长度会变得太小而导致计算错误。
我想知道是否有更好的解决方案可以做到这一点,而不会改变响应的基本结构。