str_replace()忽略count参数?

时间:2012-05-09 18:08:26

标签: php

如果给定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谈话之后,这种古怪的行为让我觉得它们是错误,或者是它拥有的那些奇怪的魔法。

2 个答案:

答案 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参数不限制替换次数,它只是让你看看有多少替换品......