我有一个用以下字符分隔的PHP字符串:
$str = "var1,'Hello'|var2,'World'|";
我使用爆炸功能,将我的字符串分割成这样的数组:
$sub_str = explode("|", $str);
并返回:
$substr[0] = "var1,'hello'";
$substr[1] = "var2,'world'";
在这种情况下,是否有任何方法可以炸开数组中的$substr
:
$substr
的第一部分是数组索引,$substr
的第二部分是变量?
示例:
$new_substr = array();
$new_substr["var1"] = 'hello';
$new_substr["var2"] = 'world';
当我打电话给$new_substr
时,它只返回结果吗?
示例:
echo $new_substr["var1"];
然后返回:你好
答案 0 :(得分:3)
尝试此代码:
$str = "var1,'Hello'|var2,'World'|";
$sub_str = explode("|", $str);
$array = [];
foreach ($sub_str as $string) {
$data = explode(',', $string);
if(isset($data[0]) && !empty($data[0])){
$array[$data[0]] = $data[1];
}
}
答案 1 :(得分:3)
您可以使用preg_match_all
提取键和值,然后使用array_combine
将它们放在一起:
$str = "var1,'Hello'|var2,'World'|";
preg_match_all('/(?:^|\|)([^,]+),([^\|]+(?=\||$))/', $str, $matches);
$new_substr = array_combine($matches[1], $matches[2]);
print_r($new_substr);
输出:
Array (
[var1] => 'Hello'
[var2] => 'World'
)
答案 2 :(得分:2)
您可以使用explode()
,str_replace()
函数。
步骤很简单:
1)用|
将字符串分成两段,这将形成一个包含两个元素的数组。
2)循环遍历拆分后的数组。
3)根据需要替换单引号。
4)用逗号(,)替换foreach当前元素
5)现在,我们将键和值分隔开了。
6)将其追加到数组。
7)尽情享受!
代码:
<?php
$string = "var1,'Hello'|var2,'World'|";
$finalArray = array();
$asArr = explode('|', $string );
$find = ["'",];
$replace = [''];
foreach( $asArr as $val ){
$val = str_replace($find, $replace, $val);
$tmp = explode( ',', $val );
if (! empty($tmp[0]) && ! empty($tmp[1])) {
$finalArray[ $tmp[0] ] = $tmp[1];
}
}
echo '<pre>';print_r($finalArray);echo '</pre>';
输出:
Array
(
[var1] => Hello
[var2] => World
)
答案 3 :(得分:1)
尝试以下代码:
$str = "var1,'Hello'|var2,'World'|";
$sub_str = explode("|", $str);
$new_str = array();
foreach ( $sub_str as $row ) {
$test_str = explode( ',', $row );
if ( 2 == count( $test_str ) ) {
$new_str[$test_str[0]] = str_replace("'", "", $test_str[1] );
}
}
print $new_str['var1'] . ' ' . $new_str['var2'];
只需用逗号将$sub_str
展开,然后从值中替换单引号即可提供预期的结果。