2012-02-24 3 views
2

я работаю в новом WordPress плагин, но мне нужна помощь с одной регулярной expresison, поэтому, пожалуйста, если вы можете помочь, у меня есть этотРегулярное выражение для сериализованных данных в строке

a:6:{s:5:"width";s:4:"3000";s:6:"height";s:4:"2100";s:14:"hwstring_small";s:23:"height=\'89\' width=\'128\'";s:4:"file";s:25:"2012/02/sopa_nicearma.jpg";s:5:"sizes";a:3:{s:9:"thumbnail";a:3:{s:4:"file";s:23:"sopa_nicearma-15x10.jpg";s:5:"width";s:2:"15";s:6:"height";s:2:"10";}s:6:"medium";a:3:{s:4:"file";s:25:"sopa_nicearma-300x210.jpg";s:5:"width";s:3:"300";s:6:"height";s:3:"210";}s:5:"large";a:3:{s:4:"file";s:25:"sopa_nicearma-700x490.jpg";s:5:"width";s:3:"700";s:6:"height";s:3:"490";} 
}s:10:"image_meta";a:10:{s:8:"aperture";s:1:"0";s:6:"credit";s:0:"";s:6:"camera";s:0:"";s:7:"caption";s:0:"";s:17:"created_timestamp";s:1:"0";s:9:"copyright";s:0:"";s:12:"focal_length";s:1:"0";s:3:"iso";s:1:"0";s:13:"shutter_speed";s:1:"0";s:5:"title";s:0:"";}} 

, но я хочу удалить этот

s:9:"thumbnail";a:3:{s:4:"file";s:23:"sopa_nicearma-15x10.jpg";s:5:"width";s:2:"15";s:6:"height";s:2:"10";} 

и иметь это в конце концов

'a:6:{s:5:"width";s:4:"3000";s:6:"height";s:4:"2100";s:14:"hwstring_small";s:23:"height=\'89\' width=\'128\'";s:4:"file";s:25:"2012/02/sopa_nicearma.jpg";s:5:"sizes";a:3:{s:6:"medium";a:3:{s:4:"file";s:25:"sopa_nicearma-300x210.jpg";s:5:"width";s:3:"300";s:6:"height";s:3:"210";}s:5:"large";a:3:{s:4:"file";s:25:"sopa_nicearma-700x490.jpg";s:5:"width";s:3:"700";s:6:"height";s:3:"490";} 
}s:10:"image_meta";a:10:{s:8:"aperture";s:1:"0";s:6:"credit";s:0:"";s:6:"camera";s:0:"";s:7:"caption";s:0:"";s:17:"created_timestamp";s:1:"0";s:9:"copyright";s:0:"";s:12:"focal_length";s:1:"0";s:3:"iso";s:1:"0";s:13:"shutter_speed";s:1:"0";s:5:"title";s:0:"";}} 

так, в конце концов я хочу удалить, этот вид от удаления

цепи {цепи "имя образ" цепь}

у меня есть идея

$var=preg_replace("(.+)\{(.+)(sopa_nicearma\-15x10\.jpg)(.+)\}/", "", $var); 

но не работаю нормально becouse у меня есть этот

}s:10:"image_meta";a:10:{s:8:"aperture";s:1:"0";s:6:"credit";s:0:"";s:6:"camera";s:0:"";s:7:"caption";s:0:"";s:17:"created_timestamp";s:1:"0";s:9:"copyright";s:0:"";s:12:"focal_length";s:1:"0";s:3:"iso";s:1:"0";s:13:"shutter_speed";s:1:"0";s:5:"title";s:0:"";}} 
+2

Сначала вы должны сначала выполнить инициализацию значения, затем выполнить модификацию и затем сериализовать ее снова. – hakre

+0

Есть ли причина, по которой вы не хотите сначала неэриализовать это? – StackOverflowNewbie

+0

Да, потому что я взял значение прямо из базы данных wordpress и хорошо, что не знал, что это значение сериализации, но спасибо, что была проблема – nicearma

ответ

5

Вы не должны делать этого с регулярными выражениями. Это сериализованные объекты, и если вы редактируете что-либо в них вручную, которое изменяет длину любой содержащейся строки, вам также нужно изменить параметр длины.

Вместо этого вы должны несериализовать данные, выполнив $data = unserialize($data); внести изменения, а затем сериализовать их снова с помощью $data = serialize($data);.

+0

да у вас есть причина, спасибо – nicearma

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