首页 > 解决方案 > 抓取具有不同长度的动态字符串的子字符串,与特定变量和/或值 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";}"

目标

我需要遍历每个地址并根据它们的值创建动态变量。例如从返回的第一个地址:我想创建变量:

  1. $streetAddress = "舍伍德森林路 230 号。"
  2. $city = "温斯顿塞勒姆"
  3. $state = "北卡罗来纳州"
  4. $zip = "27104"

我尝试过和/或研究过的东西

类似的堆栈溢出问题:

可变长度子串

使用 PHP 从字符串中获取特定值

如何从双引号中提取字符串?

我还尝试在双引号上爆炸字符串并推入数组并进行修剪。

我还尝试了 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”并在双引号内返回正确的值?

标签: phpstringpreg-match

解决方案


推荐阅读