如果给定here str_replace()计数参数应该在某些替换完成后停止。正确?
这是我的代码:
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;
现在我在我的测试中仔细检查了$r = 1
的所有内容,并且确保count($_POST['ad'])
是3。仍然,str_replace完全忽略count参数并替换所有出现以给出:
INSERT INTO `listings` VALUES (NULL, '%s');
这让我疯了。看到如此多的anti-php谈话之后,这种古怪的行为让我觉得它们是错误,或者是它拥有的那些奇怪的魔法。
答案 0 :(得分:7)
我相信$ count用于检查执行了多少替换(例如,如果在使用str_replace()之后打印$ count,则会得到10)。
你可以通过使用带有一点正则表达式的preg_replace()来做你想做的事情。请参阅:How to use str_replace() to remove text a certain number of times only in PHP?
答案 1 :(得分:1)
count参数不限制替换次数,它只是让你看看有多少替换品......