我在PHP中有一个变量,它来自一个包含电子邮件地址的表单,所有地址都用逗号('(分隔例如:user@domain1.com,user@domain2.com,user3@domain2.com,user2@domain4.com
我试图实现的是查看变量,例如找到@domain2.com,并删除电子邮件两侧逗号之间的所有内容。
我知道我可以使用str_replace来替换我想要的文本,比如:
$emails=str_replace("@domain2.com", "", "$emailscomma");
然而,我更希望根据我要求它查找的文本删除整个电子邮件。
所以在这个例子中,我想删除user@domain2.com和user3@domain2.com
这可能吗?
搜索了我能找到的任何文章,但找不到找到的东西,然后替换,但不仅仅是它找到的文本。
当然可以使用正则表达式,但我建议使用更简单的方法。对数组进行操作要比对字符串和子字符串进行操作容易得多。我会把你的字符串转换成一个数组,然后过滤它
$emails = "user@domain1.com,user@domain2.com,user3@domain2.com,user2@domain4.com";
// Convert to array (by comma separator)
$emailsArray = explode(',', $emails);
$filteredArray = array_filter($emailsArray, function($email) {
// filters out all emails with '@domain2.com' substring
return strpos($email, '@domain2.com') === false;
});
print_r($filteredArray);
现在,您可以再次将筛选后的数组转换为字符串。只需使用implode()
函数。