文字列では、各文字のサイズはバイトです(PHPと比較して、Javaの各文字はUTF8文字であるCharacterであり、C言語の各文字はコンパイル時に選択できます)。
バイトには、ABC、123、abc などの ASCII コード文字と、キャリッジ リターン、バックスペースなどのいくつかの特殊文字があります。
表示できない特殊文字が多数ございます。つまり、表示方法に標準はありません。たとえば、文字「A」はコード 65 からコード 97 まで存在します。場所によっては、バックスペースが記号として表示され、実際には前の文字が置き換えられます。 1 文字が返されます。
PHPはCベースなので、Cと比較する記述が多くあります。 C 文字列では、文字列をコード 0 で終了するのが古典的な定義です。したがって、このような文字列を想定すると、その中の 3 文字のエンコーディングはそれぞれ 97、0、97 になります。そこで、C の str_replace に相当する関数があり、それを使って 97 を 98 に置き換えると、この関数が 0 を読み出した時点で終了とみなされ、98,0,97 が得られます。同様に、PHP の str_replace はバイナリ セーフであるため、この 0 は特別な終了記号とは見なされず、結果は 98, 0, 98 になります。
[バイナリ セキュリティ] PHP ドキュメントでは、基本的に次のことを意味します。C 言語の同様の関数を持つ関数は一部の文字を特別に扱いますが、PHP のこの関数はすべての文字を同等に扱うため、セキュリティについて心配する必要はありません。特殊文字ハンドルの影響、特に 0 文字のエンコードについては心配する必要はありません。
以上、PHP バイナリ セキュリティの意味をその側面も含めて紹介しましたが、PHP チュートリアルに興味のある友人に役立つことを願っています。