2011-11-17 73 views
0

我在用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

回答

0

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

0
preg_match("/Visitor\s*Name:/", $line); 

\s代表所有類型的空格中,*允許零個或多個字符的字符串。

0

這是怎麼回事?

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