in PHP what does it mean by a function being binary-safe ?
It means the function will work correctly when you pass it arbitrary binary data (i.e. strings containing non-ASCII bytes and/or null bytes).
For example, a non-binary-safe function might be based on a C function which expects null-terminated strings, so if the string contains a null character, the function would ignore anything after it.
This is relevant because PHP does not cleanly separate string and binary data.
For instance, if PHP's =strlen= function worked like C standard library =strlen=, the result here would be wrong:
如果函数是binary safe的话,我们将得到7;如果函数是非binary safe的话,我们将得到3 * strlen是binary safe的,所以实际上以下的运行结果是"7"
$str = "abc\x00abc"; echo strlen($str); //gives 7, not 3!