2015-11-17 3 views
1

В MySQL я могу видеть много этих структурированных строк (это как JSON, но не совсем):Каково название этой структурированной строки?

a:2:{s:5:"hello";s:0:"";s:7:"World !";s:0:"";} 

ли есть специальное название?

Можно автоматически пересчитать длину строк (после поиска и замены)?

+5

Это сериализованное ..... использовать unserialize() для воссоздания массива (в данном случае), затем обработать сериализацию() снова ..... не пытайтесь искать и заменять «in situ» –

ответ

3

Это сериализованная строка в PHP - проверить Serialize() и десериализации() функции в документации:

http://php.net/manual/en/function.serialize.php

Вы не можете редактировать их инлайн (по крайней мере, я Wouldn» t рекомендую это). Лучше всего будет использовать userialize(), внести изменения в массив, а затем повторно сериализовать() массив.

+0

Я могу 't unserialze и serialize throught php. Мне нужно сделать это в sql (или через sql-файл). Это причина нового доменного имени веб-сайта, присутствующего в этих типах строк. – Inglebard

+0

@Inglebard - если это одноразовая вещь, вам может быть лучше скопировать текст из базы данных и в быстро написанную программу PHP, чтобы ее неэтериализировать; внести изменения; и распечатайте новую сериализованную версию, чтобы вы могли вставить ее обратно в базу данных. Вы можете отредактировать его прямо в базе данных, но это очень, очень легко понять. – andrewsi

+1

Если вы выполняете поиск и заменяете напрямую, то неэтериализация не удастся (очень вероятно). Например, если вы замените «привет» на «привет», вам также нужно будет изменить «s: 5» на «s: 2», поскольку длина строки изменилась с 5 до 2 символов («s» «означает« строка »,« а »означает« массив »и т. д.). Я настоятельно рекомендую писать сценарий, который будет извлекать строки, которые требуют изменений, затем неэтериализовать данные, заменить, затем сериализовать и сохранить. Все остальное приводит к очень тонкой линии, чтобы разбить сайт на куски. –

Смежные вопросы