拆分两个特殊字符之间的字符串

时间:2017-11-14 02:11:18

标签: php arrays regex special-characters

目标

我想将字符串的特殊字符< >之间的所有电子邮件检索到电子邮件数组中

$list = '"momo rabit" <m.rabit@sfr.fr>, "youn" <youn@hotmail.fr>, "yourmail" <yourmail@gmail.com>, "yovan" <y.yovan@orange.fr>, "popol" <popol.paul@alice.fr>'; 

我尝试了什么

基于this answer,它应该有用。

$list = htmlspecialchars($list);
preg_match_all("/<(.*?)>/", $list, $list_step);
var_dump($list_step); // Return empty arrays

我也尝试过没有成功

preg-split

str_getcsv

1 个答案:

答案 0 :(得分:3)

答案很简单。 htmlspecialchars<>转换为&lt;&gt;。所以要么改变正则表达式,要么删除该函数。

$list = '"momo rabit" <m.rabit@sfr.fr>, "youn" <youn@hotmail.fr>, "yourmail" <yourmail@gmail.com>, "yovan" <y.yovan@orange.fr>, "popol" <popol.paul@alice.fr>'; 
//$list = htmlspecialchars($list);
preg_match_all("/<(.*?)>/", $list, $list_step);
var_dump($list_step); // Return empty arrays

演示:https://3v4l.org/VUY1U

替代:

$list = '"momo rabit" <m.rabit@sfr.fr>, "youn" <youn@hotmail.fr>, "yourmail" <yourmail@gmail.com>, "yovan" <y.yovan@orange.fr>, "popol" <popol.paul@alice.fr>'; 
$list = htmlspecialchars($list);
preg_match_all("/&lt;(.*?)&gt;/", $list, $list_step);
var_dump($list_step); // Return empty arrays

演示:https://3v4l.org/gI07A