4

ここで指定されているように、特定の置換が行われた場合、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 つだと思います。

4

2 に答える 2

9

$count は、実行された置換の数を確認するために使用されると思います (たとえば、str_replace() を使用した後に $count を出力すると、10 になります)。

少しの正規表現で preg_replace() を使用することで、やりたいことができます。参照してください: str_replace() を使用して PHP でのみテキストを特定の回数削除する方法は?

于 2012-05-09T18:11:48.303 に答える
1

count パラメータは、置換の数を制限しません。単に、置換が行われた回数を確認できます...

于 2012-05-09T18:12:01.970 に答える