現在の位置: ホーム> 最新記事一覧> 元のキャラクターを維持し、繰り返しの脱出を避けたいですか?このようなaddcslashesを使用してみてください

元のキャラクターを維持し、繰り返しの脱出を避けたいですか?このようなaddcslashesを使用してみてください

gitbox 2025-09-15

PHPプログラミングでは、特にデータベースとのやり取り、正規表現、またはHTMLコンテンツの出力を扱う場合、文字列を逃れる必要がある状況に遭遇することがよくあります。キャラクターを脱出させるのに役立ちます。一部の特殊文字が解析または実行されることを避けてください。ほとんどの場合、 addslashes()関数は文字列を効果的にエスケープすることができますが、特定のシナリオでは、繰り返しのエスケープを避けながら元の文字を保存したい場合があります。この時点で、 addcslashes()関数はより柔軟なソリューションを提供します。

addcslashes()関数の紹介

PHPのaddcslashes()関数は、文字列内の指定された文字を逃れるために使用されます。 addslashes()とは異なり、 addcslashes()を使用すると、開発者は脱出する必要があるキャラクターを指定できるため、より多くの制御が可能になります。

関数定義

<span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-title function_ invoke__">addcslashes</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$str</span></span><span>, </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$charlist</span></span><span>)
</span></span>
  • $ str :処理する文字列。

  • $ CHARLIST :逃げる必要があるキャラクターセット。このキャラクターセットは、単一の文字、複数の文字、または文字範囲(たとえば: AZ )でもあります。

addcslashes()は、指定された$ charlistと一致する$ strでキャラクターを逃がします。 addslashes()とは異なり、 addcslashes()は単一の引用符( ' )または二重引用符( " )を直接逃がすのではなく、代わりに$ charlistのキャラクターセットに基づいて逃げる必要があるものを決定します。

アプリケーションシナリオ

1.元のキャラクターを保持しますが、繰り返しの脱出を避けてください

複数の脱出された文字を含む文字列があり、これらのキャラクターを逃れたいが、逃げた文字を繰り返し処理したくないとします。 addcslashes()を使用すると、元の文字に影響を与えることなく、繰り返しのエスケープを回避できます。

例:

 <span><span><span class="hljs-variable">$str</span></span><span> = </span><span><span class="hljs-string">"This is a 'test' string with special characters like \n, \r, and \t."</span></span><span>;

</span><span><span class="hljs-variable">$escapedStr</span></span><span> = </span><span><span class="hljs-title function_ invoke__">addcslashes</span></span><span>(</span><span><span class="hljs-variable">$str</span></span><span>, </span><span><span class="hljs-string">"\n\r\t"</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$escapedStr</span></span><span>;
</span></span>

出力

 <span><span>This </span><span><span class="hljs-keyword">is</span></span><span> a </span><span><span class="hljs-string">'test'</span></span><span> </span><span><span class="hljs-built_in">string</span></span><span> </span><span><span class="hljs-keyword">with</span></span><span> special characters like \n, \r, </span><span><span class="hljs-keyword">and</span></span><span> \t.
</span></span>

この例では、 \ n\ r 、および\ tのみを免れ、より多くの文字を逃がします。文字列に既にこれらの脱出された文字が含まれている場合、 addcslashes()は、これらの文字の繰り返し処理を避けるのに役立ちます。

2。特定の文字セットをエスケープします

時には、すべての小文字や数字など、特定の範囲内でのみキャラクターを逃れたい場合があります。 addcslashes()の柔軟性があるため、これを行うことができます。

例:

 <span><span><span class="hljs-variable">$str</span></span><span> = </span><span><span class="hljs-string">"This is a test string 1234!"</span></span><span>;
</span><span><span class="hljs-variable">$escapedStr</span></span><span> = </span><span><span class="hljs-title function_ invoke__">addcslashes</span></span><span>(</span><span><span class="hljs-variable">$str</span></span><span>, </span><span><span class="hljs-string">'a-z'</span></span><span>);  </span><span><span class="hljs-comment">// すべての小文字を脱出します</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$escapedStr</span></span><span>;
</span></span>

出力

 <span><span>This </span><span><span class="hljs-keyword">is</span></span><span> \a \t\es\ t </span><span><span class="hljs-built_in">string</span></span><span> </span><span><span class="hljs-number">1234</span></span><span>!
</span></span>

この例では、小文字AZのみが逃げます。必要に応じて文字セットを変更して、よりカスタマイズされたエスケープ処理を実行できます。

3.正規表現で特殊文字を脱出します

正規表現を構築するときに特殊文字を安全に処理したい場合は、 AddCslashes()は非常に便利なツールです。ドット( )、アスタリスク( * )などの正規表現に干渉するキャラクターを逃れるのに役立ちます。

例:

 <span><span><span class="hljs-variable">$pattern</span></span><span> = </span><span><span class="hljs-string">"This is a test with some special characters like . * + ?"</span></span><span>;
</span><span><span class="hljs-variable">$escapedPattern</span></span><span> = </span><span><span class="hljs-title function_ invoke__">addcslashes</span></span><span>(</span><span><span class="hljs-variable">$pattern</span></span><span>, </span><span><span class="hljs-string">'.|*+?()[]{}^$\\'</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$escapedPattern</span></span><span>;
</span></span>

出力

 <span><span>This </span><span><span class="hljs-keyword">is</span></span><span> a test </span><span><span class="hljs-keyword">with</span></span><span> </span><span><span class="hljs-keyword">some</span></span><span> special characters </span><span><span class="hljs-keyword">like</span></span><span> \. \* \+ \? 
</span></span>

このようにして、正規表現を構築するときにエラーや予期しないマッチング結果を上げないようにすることができます。

4。SQLクエリに使用

SQLクエリを処理するときは、SQLインジェクションを避けることが重要です。 PDOまたはMySQLIの前処理ステートメントを使用することをお勧めしますが、場合によっては、潜在的なSQL注入攻撃を防ぐためにユーザーの入力を逃れる必要があります。 addcslashes()は、ユーザー入力の特殊文字を逃れるのに役立ち、それによりSQLクエリのセキュリティを改善します。

例:

 <span><span><span class="hljs-variable">$userInput</span></span><span> = </span><span><span class="hljs-string">"Robert'); DROP TABLE Students;--"</span></span><span>;
</span><span><span class="hljs-variable">$escapedInput</span></span><span> = </span><span><span class="hljs-title function_ invoke__">addcslashes</span></span><span>(</span><span><span class="hljs-variable">$userInput</span></span><span>, </span><span><span class="hljs-string">"'"</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$escapedInput</span></span><span>;
</span></span>

出力

 <span><span>Robert\'); DROP TABLE Students;-- 
</span></span>

単一の引用を逃れることにより、SQLインジェクション攻撃を回避できます。この方法は、前処理ステートメントほど安全ではありませんが、それでもある程度の保護を提供します。

まとめ

AddCslashes()は、文字列内の特定の文字を逃れるための柔軟な方法を提供する非常に強力なPHP関数です。 addslashes()とは異なり、 addcslashes()を使用すると、逃げる必要がある特定の文字を指定することができ、それにより、弦の脱出プロセスをより適切に制御できます。繰り返しのエスケープの回避、正規表現の処理、SQL注入の防止などのシナリオにあるかどうかにかかわらず、 AddCSlashes()は重要な役割を果たすことができます。

この機能を適切に理解し、使用することは、PHPプログラミングの文字列の処理の効率とセキュリティを改善するのに役立ちます。