extrovertive Posted September 3, 2006 Share Posted September 3, 2006 Say, I have the message "My email is [email protected] - please send it there"I want the output to be "My email is [email protected] - 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 https://forums.phpfreaks.com/topic/19535-changing-emailmailcom-to-xxxxxxxxxcom-in-a-message/ 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 https://forums.phpfreaks.com/topic/19535-changing-emailmailcom-to-xxxxxxxxxcom-in-a-message/#findComment-85002 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 [email protected] - 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 https://forums.phpfreaks.com/topic/19535-changing-emailmailcom-to-xxxxxxxxxcom-in-a-message/#findComment-87201 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.