怎么做我只使用PHP获取双引号字符串

时间:2014-10-28 10:22:17

标签: php string

如何通过使用php将所有字符串括在一对双引号中,我想用以下字符串获取它们,

$str = 'a:2:{i:1;a:4:{i:1;s:4:"2000";i:2;s:8:"10th STD";i:3;s:9:"Full Time";i:4;s:24:"State Board of Education";}i:2;a:4:{i:1;s:4:"2003";i:2;s:8:"12th STD";i:3;s:9:"Full Time";i:4;s:24:"State Board of Education";}}';

我希望输出如下

2000
10th STD
Full Time
State Board of Education

我尝试了以下代码,但输出仅来自2000

<?php

$str = 'a:2:{i:1;a:4:{i:1;s:4:"2000";i:2;s:8:"10th STD";i:3;s:9:"Full Time";i:4;s:24:"State Board of Education";}i:2;a:4:{i:1;s:4:"2003";i:2;s:8:"12th STD";i:3;s:9:"Full Time";i:4;s:24:"State Board of Education";}}'

if (preg_match('/"([^"]+)"/', $str, $m)) 
{
print $m[1];   
} 
else 
{

}
<?

请建议我怎么做,我应该用哪个功能来获取输出?

3 个答案:

答案 0 :(得分:7)

希望这会对你有所帮助。

<?php
        $str = 'a:2:{i:1;a:4:{i:1;s:4:"2000";i:2;s:8:"10th STD";i:3;s:9:"Full Time";i:4;s:24:"State Board of Education";}i:2;a:4:{i:1;s:4:"2003";i:2;s:8:"12th STD";i:3;s:9:"Full Time";i:4;s:24:"State Board of Education";}}';

        $str_array = unserialize($str);  
        foreach($str_array as $values) {
            foreach($values as $value) {
                echo $value . '<br/>';
            }
            echo '<br/>';
        }
?>

将返回:

2000
第十届STD 全职
州教育委员会

2003
第12个STD
全职
州教育委员会

答案 1 :(得分:1)

它看起来像是一个bog标准的序列化数组,所以只需对字符串应用unserialize(),然后解析值并在它们上应用is_string,你就会以干净的方式实现结果。

答案 2 :(得分:1)

如上所述,unserialize()然后转换为字符串

<?php
    $str = 'a:2:{i:1;a:4:{i:1;s:4:"2000";i:2;s:8:"10th STD";i:3;s:9:"Full Time";i:4;s:24:"State Board of Education";}i:2;a:4:{i:1;s:4:"2003";i:2;s:8:"12th STD";i:3;s:9:"Full Time";i:4;s:24:"State Board of Education";}}';
    $str=unserialize($str);
    $str2=implode("<br>",$str[1]);
    print $str2."\n";
?>

给出

2000<br>10th STD<br>Full Time<br>State Board of Education