从电子邮件解析信息时出现多个空格

问题描述:

我在用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米之间的空间,但它通常有多个进来空间。

如何让这个工作与多个空间的任何帮助?

+0

分裂已被弃用 – malletjo

+0

使preg_split本质上是新的分割。它使它更容易,因为它只是抛出数组中的所有内容,而不必使用list()。 – sllecks

splitpreg_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" 
}