PHP функция addcslashes экранирует спецсимволы в стиле языка C , является аналогом addslashes с возможностью указывать свой набор символов для экранирования . Некорректно работает с некоторыми спецсимволами , а именно null byte считает концом строки. PHP: echo addcslashes ( "some\0thing" , '\'' ); ->some PHP: echo addcslashes ( "some\0thing'" , chr(0).'..\'' ); -> some\000thing\'
символы с Ascii менее 32 и более 126 преобразуются в восьмеричное представление. На выходе должно быть тоже что и на входе: Code: echo addcslashes ( "some\0thing" , '\'' ); ->some\0thing но \0 нулевой байт интерпретируется как конец стироки, так? Во втором примере экранируются все символы из диапазона от chr(0) до одинарной кавычки, должно быть на выходе: Code: echo addcslashes ( "some\0thing'" , chr(0).'..\'' ); -> some000thing\' , потому как \0 преобразовался в восьмеричное представление 000, а вот почему пропала кавычка? её в аргументе тоже надо было экранировать? P.S. В тэгах php тут на форуме тоже иногда пропадают экранирующие слэши, лучше в code заключать, потому что я не уверен, что в посте вывелось то, что реально в php выводится...