1

PHP が提供するPCRE Patternsのドキュメントを見てきました。ユーザーからのテキストを処理するためにサード パーティのプラグインを使用しています。(preg_replace(): コンパイルに失敗しました: 文字クラスの終了] がありません

$input  = preg_replace('/[\]/i','',$userInput);

私が見ることができることから、終端の区切り文字は / であり、その中に \ のみを含む文字クラスがあります。i, if I can read correctly は、大文字または小文字を気にしないように式に指示します。開閉どちらも見えます。

エラーがスローされるのはなぜですか?preg_replace は何をしようとしていますか?

4

1 に答える 1

3

をエスケープする必要があります。\それ以外の場合は をエスケープ]します (PHP 文字列用に 1 回、PCRE 用に 1 回、2 回エスケープする必要があります)。

$input  = preg_replace('/[\\\]/i','',$userInput);

[また、 and]を完全に省略できます (およびi)。

$input  = preg_replace('/\\\/','',$userInput);

または、次を使用できますstr_replace

$input  = str_replace('\\','',$userInput);
于 2013-03-29T19:02:05.520 に答える