if (isset($values) && count($params) == count($values))
{
$counter = 0;
$html = str_replace('mxyzptlk', 'value', $html);
foreach ($values as $value)
{
$string = 'klf' . strval($counter);
$html = str_replace($string, $value, $html);
$counter++;
}
}
这是一段相当简单的代码。在程序的前面,我使用循环生成一个值列表,结果如下:
klf0klf1klf2klf3…klf19klf20
上面的循环应该遍历这个"klf"值列表,并将它们替换为其他值。
发生的奇怪的事情是整个页面工作正常,直到循环到达"klf10"及以上。然后发生的事情是字符串被截断,将"klf10"更改为"0",将"klf11"更改为"1",以此类推。两位数搞砸了。
就像我说的,代码工作得很好,直到str_replace函数——在str_replace显示正确的值之前输出$string ("klf10"),在str_replace显示正确的值之前输出$value ("klf (n)")
你知道为什么会这样吗?我尝试将整数部分转换为字符串,但显然没有帮助。
编辑:我已经确认字符串实际上并没有被截断,但"klf10"实际上部分被"klf1"的值所取代。我将继续使用它,但我认为它可能有助于诊断。
没有实现str_replace替换字符串中所有出现的字符。在循环开始时,"klf1"在每个实例中都被替换;"klf1","klf10"answers"klf12"都被打乱了。