Reputation: 16968
I know that this can be done using settings in Outlook, but that only sorts the issue for myself.
What I would like to do is use PHP to prevent text from being hyperlinked just because there is an @ sign etc...
As far as I can see, the only option for me is to encode all @ signs to their HTML numeric entity like so:
Something like this:
$message = str_replace('@','@',$message);
However, if possible, I do not want this to happen if the @ sign is part of an email address.
Therefore I need something like this:
// SOME_REGEX will match any @ sign that is NOT part of an email address
$message = preg_replace('SOME_REGEX','@',$message);
Can anybody think of any other better methods? Are there any flaws in this plan? Can anyone suggest a good regular expression for this? I am struggling to write a regex that matches an @ sign if it is not part of an email address
Thanks in advance
Upvotes: 1
Views: 255
Reputation: 37065
This will not work if the email address is wrapped in anything not defined in the trim list.
$chunked_message = explode(" ", $message);
foreach($chunked_message as $chunk) {
$clean_chunked_message[] =
(!filter_var(trim($chunk, " -().?!\t\r\n", FILTER_VALIDATE_EMAIL))
? str_replace('@', '@' $chunk) : $chunk;
}
$clean_message = implode(" ", $clean_chunked_message);
Good luck.
Upvotes: 1
Reputation: 79021
This is a feature of mail application to detect link when it is found and make it click able.
A dirty trick to escape this situation is to use space in between the links.
Example:
http://ww w.you tube.com/v=.......
Upvotes: 0