php - 抓取具有不同长度的动态字符串的子字符串,与特定变量和/或值 php 相关联
问题描述
我正在从数据库中提取地址,该地址当前作为字符串存储在数据库中,这些是接收到的值。
string(175) "a:5:{s:14:"street_address";s:23:"230 Sherwood Forest Rd.";s:12:"address_line";s:0:"";s:4:"city";s:13:"Winston Salem";s:5:"state";s:15:"North Carolina ";s:3:"zip";s:5:"27104";}"
string(149) "a:5:{s:14:"street_address";s:14:"53 East Street";s:12:"address_line";s:0:"";s:4:"city";s:10:"Middletown";s:5:"state";s:2:"CT";s:3:"zip";s:5:"06457";}"
string(157) "a:5:{s:14:"street_address";s:25:"5625 Brownstone Circle NW";s:12:"address_line";s:0:"";s:4:"city";s:6:"Canton";s:5:"state";s:4:"Ohio";s:3:"zip";s:5:"44718";}"
目标
我需要遍历每个地址并根据它们的值创建动态变量。例如从返回的第一个地址:我想创建变量:
- $streetAddress = "舍伍德森林路 230 号。"
- $city = "温斯顿塞勒姆"
- $state = "北卡罗来纳州"
- $zip = "27104"
我尝试过和/或研究过的东西
类似的堆栈溢出问题:
我还尝试在双引号上爆炸字符串并推入数组并进行修剪。
我还尝试了 preg_match() 和 preg_match_all() 的几种变体,然后存储在一个数组中。
$str = 'a:5:{s:14:"street_address";s:23:"230 Sherwood Forest Rd.";s:12:"address_line";s:0:"";s:4:"city";s:13:"Winston Salem";s:5:"state";s:15:"North Carolina ";s:3:"zip";s:5:"27104";}';
preg_match('/:".*.";/', $str, $match);
echo $match[0];
问题
如何确保我获取的值(例如“street_address”)实际上是“street_address”并在双引号内返回正确的值?
解决方案
推荐阅读
- java - 为什么 SortBy Values 结果是错误的?
- java - OpenCV - 更好地读取浮雕字符的图像处理技术(例如信用卡、车牌号)
- azure - 在 Azure 中,为什么 AuthClientId 也称为 Application Id?
- php - 使用php的电子邮件附件,文件无法在电子邮件中打开
- elixir - Elixir/Phoenix - 访问用户的 cookie:conn.cookies vs conn.req_cookies vs conn.req_headers
- eclipse - Eclipse Photon - Eclipse Marketplace 未启动
- angular - 如何以角度创建全局错误页面?
- c++ - 继承:被继承的值发生变化
- c++ - 源文件中定义的模板函数
- javascript - 哪里最好存储经常更改的数据?