Удалите управляющие символы из строки PHP

Сначала выведите схему (она, конечно, помещается в 2 МБ, нет?)

mysqldump -d --all-databases 

и восстановление это.

Впоследствии дамп только данные в отдельных операторах вставки, таким образом, можно разделить файлы и восстановить их, не имея необходимость связывать их на удаленном сервере

mysqldump --all-databases --extended-insert=FALSE --no-create-info=TRUE
60
задан halfer 5 March 2018 в 00:40
поделиться

3 ответа

Не могли бы вы создать класс-оболочку, содержащий ссылку на экземпляр NSManagedObject, который вы хотите использовать в качестве ключа словаря? Затем вы можете заставить этот класс-оболочку реализовывать NSCopying вместе с хеш-методом (возможно, просто вызывая хеш-метод NSManagedObject) и использовать эту оболочку в качестве ключа словаря.

в двойных кавычках использование \ x00 каким-то образом вызывает ошибку синтаксического анализа.)

Перевод строки и возврат каретки (часто записываются \ r и \ n ]) можно спасти от удаления следующим образом:

preg_replace('/[\x00-\x09\x0B\x0C\x0E-\x1F\x7F]/', '', $input);

Должен сказать, что я думаю Ответ Бобби лучше в том смысле, что [: cntrl:] лучше передает что делает код, кроме [\ x00- \ x1F \ x7F] .

ПРЕДУПРЕЖДЕНИЕ: ereg_replace устарел в PHP> = 5.3.0 и удален в PHP> = 7.0.0 !, используйте preg_replace вместо ereg_replace :

preg_replace('/[[:cntrl:]]/', '', $input);
101
ответ дан 24 November 2019 в 17:33
поделиться

PHP поддерживает классы POSIX, поэтому вы можете используйте [: cntrl:] вместо каких-то необычных символов-магий:

ereg_replace("[:cntrl:]", "", $pString);

Изменить:

В 5.3 может потребоваться пара дополнительных квадратных скобок.

ereg_replace("[[:cntrl:]]", "", $pString);
21
ответ дан 24 November 2019 в 17:33
поделиться

Метод без регулярных выражений

Если вы заменяете только знакомые мне управляющие символы (до 32 и 127), попробуйте следующее:

 for($control = 0; $control < 32; $control++) {
     $pString = str_replace(chr($control), "", $pString;
 }

$pString = str_replace(chr(127), "", $pString;

Цикл избавляется от всего но DEL, который мы просто добавляем в конец.

Я думаю, это будет намного менее напряженно для вас и сценария, который будет иметь дело с регулярным выражением и библиотекой регулярных выражений.

Обновлен метод без регулярных выражений

Для удовольствия я придумал другой способ сделать это. Здесь используется массив управляющих символов:

$ctrls = range(chr(0), chr(31));
$ctrls[] = chr(127);

$clean_string = str_replace($ctrls, "", $string);
-1
ответ дан 24 November 2019 в 17:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: