ここで指定されているように、特定の置換が行われた場合、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
、1 つのテストで3 であることを再確認しましたcount($_POST['ad'])
。それでも、str_replace は count パラメータを完全に無視し、すべての出現箇所を置き換えて次のように指定します。
INSERT INTO `listings` VALUES (NULL, '%s');
これは私を狂気に駆り立てています。アンチ php の話をたくさん見てきましたが、そのような風変わりな振る舞いは、バグか、それが持つ奇妙な魔法の 1 つだと思います。