Как объяснил Аркаша, проблема «бинарно-безопасного» и «не-бинарно-безопасного» не имеет ничего общего с языком.
Использование нулевого байта (0x00) для обозначения концаСтрока проще (вероятно, именно поэтому C и пошел с ней), но недостатком является то, что вы не можете иметь нулевой байт нигде в строке, что является большим ограничением, если вам нужно обрабатывать все виды данных.Сохранение длины в виде части метаданных строки является более сложным, как показывает Пит, но оно позволяет обрабатывать данные любого типа.
Относительно того, какие функции являются «бинарно-безопасными» или «не-безопасными».бинарно-безопасный ", просто прочитайте руководство PHP перед , используя функции.Это то, чем я занимаюсь.Нет необходимости составлять список, потому что руководство по PHP уже объясняет, что вам нужно знать о функциях, в том числе, если они бинарно-безопасны или нет.
Большая часть вашего поста, я полагаю, связана снеправильное понимание объяснения PHP Manual, которое вы процитировали, особенно эту часть:
однако некоторые функции, которые в этом руководстве не являются «бинарно-безопасными», могут передавать строки библиотекам, которые игнорируютданные после байта NUL.
Позвольте мне попытаться прояснить ситуацию, добавив несколько моих собственных слов:
однако некоторые функции, упомянутые в этом руководстве, небыть «бинарно-безопасными», - это функции, которые может передавать строки библиотекам, которые игнорируют данные после байта NUL.
Так что на самом деле это не говорит «небинарные безопасные функции передают строки библиотекам ", это неверное толкование.Это означает, что «функции, которые могут передавать строки библиотекам, которые игнорируют данные после байта NUL, в этом руководстве называются небезопасными».
«Передача в библиотеки» - это еще один способсказать "вызов функций из других библиотек".«Игнорирование данных после байта NUL» - это поведение, которое называется небинарно-безопасным.
Еще один способ выразить это:
Некоторые функции в этом руководстве, как говорится, небыть "бинарно-безопасным" , потому что они могут вызывать другие функции, которые также не являются "бинарно-безопасными" (функции, которые игнорируют данные после байта NUL).
Я надеюсь, что это очищаетэто для вас.