Php字符串分解为特定数组
以下是保存联系人信息的字符串。此字符串是动态的,即有时新字段(例如:手机号码)可能会增加,或者旧字段(例如:电话号码)可能会删除Php字符串分解为特定数组,php,Php,以下是保存联系人信息的字符串。此字符串是动态的,即有时新字段(例如:手机号码)可能会增加,或者旧字段(例如:电话号码)可能会删除 <?php $str = "tel: (123) 123-4567 fax : (234) 127-1234
<?php $str =
"tel: (123) 123-4567
fax : (234) 127-1234
email : abc@a.a";
$newStr = explode(':', $str);
echo '<pre>'; print_r($newStr);
?>
但所需的输出格式如下:
foreach( $newStr as $key=>$value){
echo $key;
echo $value;
}
我试着用五种方式把它炸开。。。但是没有起作用。请导游
$txt =
"tel: (123) 123-4567
fax : (234) 127-1234
email : abc@a.a";
$arr = array();
$lines = explode("\n",$txt);
foreach($lines as $line){
$keys = explode(":",$line);
$key = trim($keys[0]);
$item = trim($keys[1]);
$arr[$key] = $item;
}
print_r($arr);
将preg\u split与delimeter“:”和“\n”(换行符)一起使用: 您必须使用preg_split,因为每个系统上可能有不同的行尾。还有一种可能是字符串无效,因此您应该处理它(foreach循环中的条件)这里有一个简短的方法 结果:
数组
(
[电话]=>(123)123-4567
[传真]=>(234)127-1234
[电子邮件]=>abc@a.a
)
但是,本例假设每个数据对都与您提供的字符串一样位于单独的行上,并且“key”不包含空格。您正在使用分隔符分解
:
。因此,在(123)123-4567
和传真
之间没有像:
这样的分隔符。所以你得到的是同一个值。@PankitKapadia我使用什么分隔符shd?我没有找到任何其他有意义的分隔符。文本中的每组值之间是否有换行符?如果是,请使用“\n”@user1871640-您使用的分隔符不是问题。你可以用任何一种。我只想说,您没有得到单独的值,因为(123)123-4567
和传真
@user1871640之间没有分隔符-请检查投票结果!!OP不想只是呼应(表演)他只想呼应。。。检查
foreach( $newStr as $key=>$value){
echo $key;
echo $value;
}
$txt =
"tel: (123) 123-4567
fax : (234) 127-1234
email : abc@a.a";
$arr = array();
$lines = explode("\n",$txt);
foreach($lines as $line){
$keys = explode(":",$line);
$key = trim($keys[0]);
$item = trim($keys[1]);
$arr[$key] = $item;
}
print_r($arr);
<?php
$str =
"tel: (123) 123-4567
fax : (234) 127-1234
email : abc@a.a";
$contacts = array();
$rows = explode("\n", $str);
foreach($rows as $row) {
list($type, $val) = explode(':', $row);
$contacts[trim($type)] = trim($val);
}
var_export($contacts);
array (
'tel' => '(123) 123-4567',
'fax' => '(234) 127-1234',
'email' => 'abc@a.a',
)
$newStr = preg_split("\n|:", $str);
$str =
"tel: (123) 123-4567
fax : (234) 127-1234
email : abc@a.a";
$array = array();
foreach (preg_split('~([\r]?[\n])~', $str) as $row)
{
$rowItems = explode(':', $row);
if (count($rowItems) === 2)
$array[trim($rowItems[0])] = trim($rowItems[1]);
}
preg_match_all('/(\w+)\s*:\s*(.*)/', $str, $matches);
$newStr = array_combine($matches[1], $matches[2]);
print_r($newStr);