preg_match_all('/(.*?)\s<(.*?)>,?/', $string, $hits);
print_r($hits);
這樣的事情應該工作。
與正則表達式解析它之前,如果你有\r\n
的字符串中使用:
$chars=array("\r\n", "\n", "\r");
$string=str_replace($chars, '', $string);
UPDATE:代碼我用來測試這個。
test_preg2.php:
<?php
$html='"Johnny Test" <[email protected]>,Jack <[email protected]>,"Scott Summers" <[email protected]>';
$chars=array("\r\n", "\n", "\r");
$html=str_replace($chars, '', $html);
preg_match_all('/(.*?)\s<(.*?)>,?/', $html,$hits);
print_r($hits);
?>
輸出:
Array ([0] => Array ([0] => "Johnny Test" , [1] => Jack , [2] => "Scott Summers") [1] => Array ([0] => "Johnny Test" [1] => Jack [2] => "Scott Summers") [2] => Array ([0] => [email protected] [1] => [email protected] [2] => [email protected]))
更新2:字符串已經被格式化與ヶ輛()。 (問題的樣本串錯了人......)
preg_match_all('/(.*?)\s<(.*?)>,?/', $string, $hits);
print_r($hits);
這不起作用。 preg_match_all正在返回空白匹配 – user1841557
你確定嗎?我只是試了一下,它確實有效,剩下的唯一要做的就是'$ name = str_replace(''','',$ name);'刪除引號 – Naryl
這不起作用preg_match_all正在返回空白匹配: 我將使用我正在使用的確切代碼更新我的答案。 – user1841557