korpus
злой бобёр
Строковые функции и binary-safe
Что означает binary-safe применительно к строковым функциям?
Насколько я понимаю, бинарный режим - это режим, позволяющий отображать символы как есть и без различных манипуляций с символами перевода строки. Так в Windows и Unix используются различные символы для обозначения перевода строки, а PHP умеет "сглаживать" эти разногласия (не в бинарном режиме).
Но не понятно, как binary-safe применять к строковым функциям?
Есть строковые функции, например такие: strtr(), explode(), которые являются binary-safe, а также могут использоваться в строках с юникодом.
Но есть строковые функции, которые являются binary-safe, но для юникода не приспособлены. Например строковая функция http://php.net/manual/en/function.substr-replace.php . Зачем вообще нужно делать эту функцию binary-safe? С юникодом она использоваться не может, так как ей в качестве параметров передаётся позиция внутри строки, а в юникоде позицию строки указывать бессмысленно. Простая проверка некоторых binary-safe функций говорит о том, что для юникода их использовать нельзя. Тогда для чего вообще нужны такие функции?
Что означает binary-safe применительно к строковым функциям?
Насколько я понимаю, бинарный режим - это режим, позволяющий отображать символы как есть и без различных манипуляций с символами перевода строки. Так в Windows и Unix используются различные символы для обозначения перевода строки, а PHP умеет "сглаживать" эти разногласия (не в бинарном режиме).
Но не понятно, как binary-safe применять к строковым функциям?
Есть строковые функции, например такие: strtr(), explode(), которые являются binary-safe, а также могут использоваться в строках с юникодом.
Но есть строковые функции, которые являются binary-safe, но для юникода не приспособлены. Например строковая функция http://php.net/manual/en/function.substr-replace.php . Зачем вообще нужно делать эту функцию binary-safe? С юникодом она использоваться не может, так как ей в качестве параметров передаётся позиция внутри строки, а в юникоде позицию строки указывать бессмысленно. Простая проверка некоторых binary-safe функций говорит о том, что для юникода их использовать нельзя. Тогда для чего вообще нужны такие функции?