从| srting分离的值提取在PHP中

时间:2016-06-20 06:33:12

标签: php string

如何从|

分隔的字符串中提取值

这是我的字符串

 $var='foo=1478|boo=7854|bar=74125|aaa=74125|bbb=470|ccc=74125|ddd=1200|';

我需要存储

$foo=1478
$boo=7854
$ccc=74125

5 个答案:

答案 0 :(得分:1)

当然,每个人都会建议explode路线:

$var = 'foo=1478|boo=7854|bar=74125|aaa=74125|bbb=470|ccc=74125|ddd=1200|';
foreach(array_filter(explode('|', $var)) as $e){
    list($key, $value) = explode('=', $e);
    ${$key} = $value;
}

另外,另一种方法是将管道转换为&符号,以便可以用parse_str来解释:

parse_str(str_replace('|', '&', $var), $data);
extract($data);
echo $foo;

两者都会产生相同的效果。虽然我不想使用变量变量,但它选择使用数组。

答案 1 :(得分:0)

|分解字符串,您将得到不同的值作为数组,由|分隔。现在在每个值之前添加$并回显它们以查看您想要的内容。

$var = 'foo=1478|boo=7854|bar=74125|aaa=74125|bbb=470|ccc=74125|ddd=1200|';
$arr = explode("|", $var);
$arr = array_filter($arr);
foreach($arr as $val){
    echo "$".$val."<br/>";
}

你会得到:

$foo=1478
$boo=7854
$bar=74125
$aaa=74125
$bbb=470
$ccc=74125
$ddd=1200

或者,如果您想将它们存储在$foo变量中并仅显示该值,请执行以下操作:

$var = 'foo=1478|boo=7854|bar=74125|aaa=74125|bbb=470|ccc=74125|ddd=1200|';
$arr = explode("|", $var);
$arr = array_filter($arr);
foreach($arr as $val){
    $sub = explode("=", $val);
    $$sub[0] = $sub[1];
}

echo $foo; //1478

答案 2 :(得分:0)

使用可能破坏字符串的explode函数。

$array = explode("|", $var);
print_r($array);

答案 3 :(得分:0)

您可以使用PHP变量变量概念来实现您的目标:

试试这个:

<?php
$var='foo=1478|boo=7854|bar=74125|aaa=74125|bbb=470|ccc=74125|ddd=1200|';
$vars=explode("|",$var);
foreach($vars as $key=>$value){
    if(!empty($value)){
        $varcol=explode("=",$value);
        $varname=$varcol[0];
        $varvalue=$varcol[1];
        $$varname=$varvalue;       //In this line we use $$ i.e. variable variable concept
    }
}
echo $foo;

我希望这适合你......

答案 4 :(得分:0)

您可以|使用explode array_filter来删除数组中的空白元素,并将结果传递给带引用数组的array_map

在内部回调中,您需要再次= $var='foo=1478|boo=7854|bar=74125|aaa=74125|bbb=470|ccc=74125|ddd=1200|'; $result = array(); $x = array_map(function($arr) use(&$result) { list($key, $value) = explode('=', $arr); $result[$key] = $value; return [$key => $value]; }, array_filter(explode('|', $var))); extract($result); 并将其存储在ref数组中。

使用explode后创建变量。

template.render()