0

こんにちは、私は PHP スクリプトを作成しています。preg_replace 関数の文字列をエスケープする必要があります。私の php サーバーは何らかの理由でエラーを表示しないため、どこで間違いを犯したかを検出できません。

ストライクは/*1*\

やっています:'@\/\*1\*\@' => 'HERE!'

なぜかうまくいかない!ヘルプ?

4

1 に答える 1

1

区切り文字として使用している場合は@、スラッシュをエスケープする必要はありません。ただし、PHP 文字列コンテキスト用に 1 回、PCRE 用に 1 回、バックスラッシュをもう少しエスケープする必要があります。

 ~/\*1\*\\\\~

わかりやすくする~ために、ここでは区切り記号として使用されています。

(より正確には、PHP 文字列のようにすべてのバックスラッシュをエスケープします\\。ただし、PHP は通常、単一の場合はバックスラッシュを保持します。)

エスケープを減らすために私がときどき使用するのは、文字クラス (一般的には推奨されません) とx可読性のための修飾子 (一般的には推奨されます) です。

~ [/]  [*]  1  [*]  [\\\\]  ~x

バックスラッシュをさらに倍数する必要があることに注意してください。

于 2013-08-21T23:59:44.443 に答える