我有一个插件从数据库中导出一串字符串给我。返回的数据格式如下
a:3:{i:0;s:8:"Skeletal";i:1;s:6:"Cardio";i:2;s:8:"Muscular";}
a:3:{i:0;s:14:"Access to care";i:1;s:15:"Confidentiality";i:2;s:20:"Consent to treatment";}我可以应用一个php函数来过滤数据,如何让它像这样返回,使用一个函数。
Skeletal, Cardio, Muscular
Access to care, Confidentiality, Consent to treatment发布于 2017-03-15 22:26:04
这些字符串是序列化变量。特别是数组。使用unserialize()获取数组,然后使用join()以逗号的方式分隔数组。
$unserialized_array = unserialize($string);
$comma_separated = join(', ', $unserialized_array);
echo $comma_separated;编辑:我认为这是最简单的解决方案,但下面的黑石时代的答案提供了一个正则表达式,它也能做你想做的事情(你确实要求了一个正则表达式);
发布于 2017-03-15 22:26:19
这些是序列化的数组,您需要取消序列化
发布于 2017-03-15 22:28:46
您可以使用一个非常简单的preg_match_all() of /".*?"/来完成这一任务。
<?php
$string = 'a:3:{i:0;s:8:"Skeletal";i:1;s:6:"Cardio";i:2;s:8:"Muscular";}';
preg_match_all('/".*?"/', $string, $matches);
print_r($matches);现在,$matches包含一个数组,您可以简单地访问以下的索引:
Array
(
[0] => "Skeletal"
[1] => "Cardio"
[2] => "Muscular"
)我已经创建了这个这里的工作示例。
希望这会有帮助!)
https://stackoverflow.com/questions/42821830
复制相似问题