如何从|
分隔的字符串中提取值这是我的字符串
$var='foo=1478|boo=7854|bar=74125|aaa=74125|bbb=470|ccc=74125|ddd=1200|';
我需要存储
$foo=1478
$boo=7854
$ccc=74125
答案 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()