воскресенье, 20 января 2013 г.

PHP: кавычки в str_replace()

Недавно передо мной стала задача удаления некоторых ASCII Device Control Characters из текста. Поскольку удалять нужно было определенные символы, я решил использовать str_replace(). В процессе имплементации было обнаружено разное поведение функции, в зависимости от типа кавычек, в которых мы передаем первый параметр.

Одинарные кавычки
str_replace('\x07', '', $text);
В этом случае функция ищет вхождения плейнтекста '\x07'.

Двойные кавычки
str_replace("\x07", '', $text);
В этом случае функция ищет вхождения ASCII символа '\x07'.

2 комментария:

  1. Это поведение распространяется не только на эту функцию. Это же относится ко всем символам с бекслешем. Типа \r \n \t

    ОтветитьУдалить
    Ответы
    1. С character escape codes встречаешься часто, а вот с hex работаешь не каждый день. Потому для меня это стало маленьким открытием. Это особенность не функции, а строки. Все верно.

      Удалить