【问题标题】:Split string between two special characters在两个特殊字符之间拆分字符串
【发布时间】:2017-11-14 02:11:18
【问题描述】:

目标

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

$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

【问题讨论】:

  • 因为 preg_match 似乎只保留“...”之间的字符而忽略其余字符

标签: php arrays regex special-characters


【解决方案1】:

答案很简单。 htmlspecialchars&amp;lt;&amp;gt; 转换为&amp;lt;&amp;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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 2013-03-16
    • 1970-01-01
    • 2021-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多