удалить escape-последовательности из строки в php - PullRequest
8 голосов
/ 24 августа 2011

Я работаю с файлом mysqldump, в котором экранированы последовательности символов. Мне нужно знать длину строки в качестве значения ее базы данных, но в дампе есть escape-символы, которые увеличивают длину строки.

Я использовал stripslashes(), который правильно экранирует одинарные и двойные кавычки, но не касается \r\n.

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

Ответы [ 2 ]

13 голосов
/ 24 августа 2011

Функция strip c slashes () делает именно это:

stripcslashes('foo\r\n');
2 голосов
/ 24 августа 2011

Вы можете использовать substr_count() для подсчета символов в строке. Просто посчитайте, сколько в строке обратной косой черты:

$string = "... mysqldump string here ...";
$backslashes = substr_count($string, '\\');

Это даст вам приблизительный счет. Чтобы быть на 100% точными, вам нужно посчитать, сколько существует двойных обратных косых черт, чтобы учесть буквальные обратные слеши, и соответствующим образом скорректировать количество.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...