Другие пользователи уже упоминали, что означает binary safe
вообще.
В PHP смысл более конкретный, ссылаясь только на то, что дает Майкл в качестве примера.
All строки в PHP имеют длину, связанную с числом байтов, которые ее составляют. Когда функция манипулирует строкой, она может либо:
0
. Также верно, что все строковые переменные PHP, управляемые движком, также завершают нуль. Проблема с функциями, которые полагаются на 2., состоит в том, что если сама строка содержит байт со значением 0
, функция, которая манипулирует им, будет думать, что строка закончилась в этой точке и будет игнорировать все после этого.
Например, если функция PHP strlen
работала как стандартная библиотека C strlen
, результат здесь был бы неправильным:
$str = "abc\x00abc";
echo strlen($str); //gives 7, not 3!