php str_replace替换修改mysql数据字段序列化内容中的域名
serialize()
函数序列化后存储在数据库的值,不能通过 mysql replace
直接批量替换修改其中的内容,想批量替换序列化后的内容,可以使用 php 的 unserialize()
函数对内容进行反序列化,然后使用 str_replace()
函数替换,再 serialize()
序列化后存储进数据库。
如
数据库表 table_post 字段 post_meta 的值:
a:4:{s:8:"thumbnail";s:73:"http://www.tddx.net/uploads/2022/01/626086271217.jpg";}
把值里的域名改成 tddx.net,通过sql读取出上面的字段内容后,附值给 $meta
,然后php代码
$result = unserialize($meta); $replace = serialize(str_replace('http://www.tddx.net','http://tddx.net',$result));
再通过 update 语句把 $replace
存回去就可以了。