Jump to content

Archived

This topic is now archived and is closed to further replies.

extrovertive

Changing email@mail.com to xxxxx@xxxx.com in a message?

Recommended Posts

Say, I have the message "My email is joe@yahoo.com - please send it there"

I want the output to be "My email is xxx@xxxxx.xxx - please send it there"


The error is in the line with the statement:

$message = preg_replace($pattern, EmailToX($1), $message);

I'm not sure if preg_replace can call a function or not.

[code=php:0]
if(isset($_POST['msgsubmit']))
{
$message = $_POST['message'];
$pattern = "/([a-zA-Z0-9]+\@[a-zA-Z0-9]+\.[a-zA-Z]+)/i";
$message = preg_replace($pattern, EmailToX($1), $message);
echo $message;
}

function EmailToX($email)
{
  $pattern = "/[[:alnum:]_]/i";
  $replace = "x";
  $email = preg_replace($pattern, $replace, $email);
  return $email;
}
[/code]

Share this post


Link to post
Share on other sites
You can use the[tt] /e [/tt]modifier to execute code, but[tt] preg_replace_callback [/tt]would be a better fit in this case.

Share this post


Link to post
Share on other sites
[code]try something like this:

[code=php:0]$string = "My email is joe@yahoo.com - please send it there";
echo preg_replace('/([-a-z0-9_][-a-z0-9_\.]+)@([-a-z0-9_][-a-z0-9_\.]+)\.([a-z]{2,4})/ise', 'str_repeat("x", strlen("\\1")) . "@" . str_repeat("x", strlen("\\2")) . "." . str_repeat("x", strlen("\\3"))', $string); [/code]

Share this post


Link to post
Share on other sites

×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.