这里有点麻烦。
下面我有一个我正在使用的示例数组。
$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" array与另一个数组合并,如下所示:
$output = str_replace(array_merge($template_search, $custom_search), array_merge($template_replace, $custom_replace), html_entity_decode($settings["detail_format"], ENT_QUOTES));
我想弄清楚的是如何获取屏蔽值并将其包含在数组中并使其成为合并的一部分。
我期待你的想法。我会尽我所能回答任何问题。
答案 0 :(得分:1)
我不明白你要做什么,但根据你的问题的标题"搜索电子邮件地址并掩盖它" ,你可以试试这个:
$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);
答案 1 :(得分:0)
您的解释并不十分清楚,但我想您正在寻找一个具体而准确的电子邮件地址。
以下是您应该使用的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 DEMO 强>