Я работаю с файлом mysqldump, который имеет escape-последовательности символов. Мне нужно знать длину строки как ее значение базы данных, но в дампе есть escape-символы, которые добавляют длину к строке.
Я использовал stripslashes()
который должным образом избегает одно- и двух кавычек, но не касается \r\n
.
Я обеспокоен тем, что есть другие escape-последовательности символов, которые я не знаю. Есть ли функция, которую я могу использовать, которая даст мне истинную длину строки, как это было бы в базе данных? Если мне нужно создать свою собственную функцию, какие другие последовательности нужно обработать?
Функция strip c slashes () выполняет именно это:
stripcslashes('foo\r\n');
Вы можете использовать substr_count()
для подсчета символов в строке. Просто подсчитайте количество обратных косых черт в строке:
$string = "... mysqldump string here ..."; $backslashes = substr_count($string, '\\');
Это даст вам приблизительный подсчет. Чтобы быть на 100% точным, вам нужно было бы подсчитать, сколько двойных обратных косых черт есть, чтобы учесть литеральные обратные косые черты, и при необходимости скорректировать счет.