我有一个像下面这样的字符串。我希望能够提取数据并将其放入变量中。我本该使用专注于特定格式字符串的函数,但是如果字符串稍有不同,它将产生问题。
brown
`
答案 0 :(得分:3)
您可以使用新行然后用:
两次爆炸(),也可以使用preg_match_all简单地进行正则表达式
$str ="Surname : Lorem Creme
Name : Doe
Bank name :P.O.S
Account no:50345343
EC no:0000000K
ID no :85-000000 Q 85
DOB : 01-06-34
Employer name:min of education
Employeer Number: Borera pry 066 Mutawatawa
Client Physical Address: 45 New Lipore";
preg_match_all("#^\s*(.*?):\s*(.*?)\s*$#mx", $str, $matches);
var_dump(array_combine($matches[1], $matches[2]));
输出:
array(10) {
["Surname "]=>
string(11) "Lorem Creme"
["Name "]=>
string(3) "Doe"
["Bank name "]=>
string(5) "P.O.S"
["Account no"]=>
string(8) "50345343"
["EC no"]=>
string(8) "0000000K"
["ID no "]=>
string(14) "85-000000 Q 85"
["DOB "]=>
string(8) "01-06-34"
["Employer name"]=>
string(16) "min of education"
["Employeer Number"]=>
string(25) "Borera pry 066 Mutawatawa"
["Client Physical Address"]=>
string(13) "45 New Lipore"
}
神奇之处在于正则表达式#^\s*(.*?):\s*(.*?)\s*$#mx
,您可以找到解释here
array_combine()
从2组中获取值,并将它们组合在一起以获得一个数组。
preg_match_all
将正则表达式应用于给定的字符串,并以
$matches
数组
答案 1 :(得分:1)
最简单的方法是进行两个explode
调用:
<?php
$str ="Surname : Lorem Creme
Name : Doe
Bank name :P.O.S
Account no:50345343
EC no:0000000K
ID no :85-000000 Q 85
DOB : 01-06-34
Employer name:min of education
Employeer Number: Borera pry 066 Mutawatawa
Client Physical Address: 45 New Lipore";
//Split string into separate lines
$lines = explode(PHP_EOL, $str);
$result = array();
foreach($lines as $ln){
//Use explode to get the pieces left and right of the ':'
list($key, $val) = explode(':', $ln);
//Put that in a new array; use trim to get rid of 'presumably' unwanted whitespace
$result[trim($key)] = trim($val);
}
var_dump($result);
?>
您也可以使用正则表达式在一行中执行此操作,但这可能更易于理解。
答案 2 :(得分:0)
使用php equals
函数:
http://php.net/manual/en/function.explode.php
首先用新行爆炸以获取行(在此处检查PHP_EOL常量:http://php.net/manual/en/reserved.constants.php)并遍历它们。
然后使用另一个hashCode
调用以“:”符号爆炸以获取字段名称和字段值。
使用explode()
函数删除空格字符(如果它们困扰您的话)。
explode()
应该是这样的(我没有测试代码)。
答案 3 :(得分:0)
根据分隔符的不同,可以使用explode()
在这种情况下,看起来您的分隔符为“ \ r \ n”。爆炸看起来像这样:
$result = explode("\r\n", $str);
然后,您也可以在“:”上爆炸,以获取键值结果