I’d like to replace the numbers and email from the sentences.
Example
$message = “Hi this is john, my personal no is 1213456789 and my email address is john@gmail.com”.
Output:
Hi this is john, my personal no is 1213456789 and my email address is john@gmail.com
I want the Output to be like this:
Output:
Hi this is john, my personal no is XXXXXXX789 and my email address is XXXX@gmail.com
But I’m currently getting like this :
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX@gmail.com
function which I’m using now
function numbers1($str) { if(($until = strpos($str, '@')) !== false) { $str = str_repeat('X', $until) . substr($str, $until); } }
Thanks in advance.
Advertisement
Answer
$message = "Hi this is john, my personal no is 1213456789 and my email address is john@gmail.com"; $arr = explode(" ", $message); foreach($arr as $key=>$val) { if(!preg_match ("/[^0-9]/", $val)) { $val_new = "XXXXXXX".substr($val, -3); $arr[$key] = $val_new; } else if(strpos($val, "@")>0) { $arr_email = explode("@", $val); $arr_email[0] = "XXXX"; $val_new = implode("@", $arr_email); $arr[$key] = $val_new; } } $new_msg = implode(" ", $arr); echo $new_msg;
UPDATE 2 :
$message = "Hi this is john, my personal no is 1213456789 and my email address is john@gmail.com"; $arr = explode(" ", $message); foreach($arr as $key=>$val) { if(!preg_match ("/[^0-9]/", $val)) { $val_new = "XXXXXXX".substr($val, -3); $arr[$key] = $val_new; } else if(preg_match ("/^[a-z0-9_+-]+(.[a-z0-9_+-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*.([a-z]{2,4})$/", $val)) { $arr_email = explode("@", $val); $arr_email[0] = "XXXX"; $val_new = implode("@", $arr_email); $arr[$key] = $val_new; } } $new_msg = implode(" ", $arr); echo $new_msg;