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] 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. 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] 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
Archived
This topic is now archived and is closed to further replies.