从电子邮件解析信息时出现多个空格
问题描述:
我在用PHP解析标准化电子邮件。该$line
看起来是这样的:从电子邮件解析信息时出现多个空格
Visitor Name: Joe Smith
,我正在使用的代码是:
else if(preg_match("/Visitor Name:/",$line))
list($label, $data[firstname], $data[lastname]) = split(" ",$line);
它正常工作时Visitor Name: Joe Smith
只有Name:
和Joe
1米之间的空间,但它通常有多个进来空间。
如何让这个工作与多个空间的任何帮助?
答
split
和preg_split
似乎接受一个正则表达式的表达式来分割,所以:
preg_split("\s+",$line)
使用一个或多个空格字符作为分隔符来分割。
由于split
在PHP文档中被标记为废弃,因此应使用preg_split
。
+0
完美。这正好解决了它。我用\t \t \t \t'$ namesplit = preg_split(“/ \ s + /”,$ line);'然后使用$ namesplit [2]&$ namesplit [3]来获取名称。 – sllecks
答
preg_match("/Visitor\s*Name:/", $line);
的\s
代表所有类型的空格中,*
允许零个或多个字符的字符串。
答
这是怎么回事?
$line = 'Visitor Name: Joe Smith';
$data = array();
$linexp = explode(':', $line);
$data['label'] = $linexp[0];
$info = explode(' ', trim($linexp[1]));
$data['firstname'] = $info[0];
$data['lastname'] = $info[1];
var_dump($data);
输出:
array(3) {
["label"]=>
string(12) "Visitor Name"
["firstname"]=>
string(3) "Joe"
["lastname"]=>
string(5) "Smith"
}
分裂已被弃用 – malletjo
使preg_split本质上是新的分割。它使它更容易,因为它只是抛出数组中的所有内容,而不必使用list()。 – sllecks