如下所示,如果完成某些替换,str_replace()count参数应该停止.对?
这是我的代码:
define("PLACEHOLDER", "INSERT INTO `listings` VALUES (NULL, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s');".PHP_EOL);
$r = (4 - count($_POST['ad']));
print count($_POST['ad'])."\n";
print $r;
$pf_args = str_replace("'%s', ", "", PLACEHOLDER, $r);
print $pf_args;
Run Code Online (Sandbox Code Playgroud)
现在我仔细检查了$r = 1我的测试中的所有内容,并且更加确定count($_POST['ad'])是3.仍然,str_replace完全忽略count参数并替换所有出现以给出:
INSERT INTO `listings` VALUES (NULL, '%s');
Run Code Online (Sandbox Code Playgroud)
这让我疯了.在看过如此多的反PHP会谈之后,这种古怪的行为让我觉得它们是错误或它拥有的那些奇怪的魔法.
我相信$ count用于检查执行了多少替换(例如,如果在使用str_replace()之后打印$ count,则会得到10).
你可以通过使用带有一点正则表达式的preg_replace()来做你想做的事情.请参阅:如何使用str_replace()仅在PHP中删除文本一定次数?