extrovertive Posted September 3, 2006 Share Posted September 3, 2006 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] Quote Link to comment Share on other sites More sharing options...
effigy Posted September 3, 2006 Share Posted September 3, 2006 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. Quote Link to comment Share on other sites More sharing options...
Nicklas Posted September 6, 2006 Share Posted September 6, 2006 [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] Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.