这里有点麻烦。
下面我有一个我正在使用的数组示例。
$custom_replace = Array (
[0] => 12345
[1] => (111) 111-1111
[2] => (111) 111-2222
[3] => email@address.com
[4] => 214113
)
我的目标是能够在这个数组中搜索电子邮件地址并屏蔽它。到目前为止,我所做的是:
$dEmail = filter_var_array($custom_replace, FILTER_VALIDATE_EMAIL);
$first = current(array_filter($dEmail));
$newStr = $first;
$search = array("@", ".com", ".net", ".biz", ".me");
$replace = array(" at ", " dot com", " dot net", " dot biz", " dot me");
$mask = str_replace($search, $replace, $newStr);
echo $mask;
上面的代码使我能够看到屏蔽的电子邮件。至于问题出在哪里?"custom_replace"数组与另一个数组合并,如下所示:
$output = str_replace(array_merge($template_search, $custom_search), array_merge($template_replace, $custom_replace), html_entity_decode($settings["detail_format"], ENT_QUOTES));
我想弄清楚的是如何获取掩码值并将其包含在数组中,并使其成为合并的一部分。
我期待你的想法。我会尽我所能回答任何问题。
我不明白你到底想做什么,但根据你问题的标题"搜索电子邮件地址并屏蔽它",你可以试试这个:
$regex_email = "/^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+'.[a-zA-Z0-9-.]+$/";
$array = array (12345, '(111) 111-1111', '(111) 111-2222', 'email@address.com', 214113);
$search = array("@", ".com", ".net", ".biz", ".me");
$replace = array(" at ", " dot com", " dot net", " dot biz", " dot me");
foreach($array as &$value){
if ( preg_match( $regex_email, $value ) )
$value = str_replace($search, $replace, $value);
}
print_r($array);
您的解释不太清楚您想要什么,但我想您正在寻找一个具体准确的电子邮件地址。
以下是您应该在您的案例中使用的PHP代码:
$custom_replace = array('12345', '(111) 111-1111' , '(111) 111-2222', 'email@address.com', '214113');
var_dump($custom_replace);
$email = 'email@address.com'; // Assuming, you are looking for a know string
$newArray = array();
foreach ($custom_replace as $value) {
($value == $email) ? '' : $newArray[] = $value;
}
var_dump($newArray);
这是结果,您会注意到没有您试图删除的电子邮件地址,其他数据被重新组装到一个新的数组中。
以下是var_dump:的结果
array(5) {
[0]=> string(5) "12345"
[1]=> string(14) "(111) 111-1111"
[2]=> string(14) "(111) 111-2222"
[3]=> string(17) "email@address.com"
[4]=> string(6) "214113"
}
array(4) {
[0]=> string(5) "12345"
[1]=> string(14) "(111) 111-1111"
[2]=> string(14) "(111) 111-2222"
[3]=> string(6) "214113"
}
IDEONE演示