Reputation: 2555
I have a variable which contains email addresses.
Examples:
$email[1]="email(at)test.com";
$email[2]="email[at]test.com";
$email[3]="email(a)test.com";
$email[4]="email(alfa)test.com";
$email[5]="email[a]test.com";
How can I to perform in PHP a regex find all between () and [] and replace with "@". so in the end it will be like this:
$email[1]="[email protected]";
$email[2]="[email protected]";
$email[3]="[email protected]";
$email[4]="[email protected]";
$email[5]="[email protected]";
All i have at the moment is this ((([a-zA-Z]+))|([[a-zA-Z]+]))
Upvotes: 0
Views: 45
Reputation: 174696
Regex:
[(\[][a-z]+[)\]]
Replacement string:
@
Example:
<?php
$string = 'email(alfa)test.com';
$pattern = '~[(\[][a-z]+[)\]]~';
$replacement = '@';
echo preg_replace($pattern, $replacement, $string);
?> //=> [email protected]
Upvotes: 1
Reputation: 41838
Use this:
$replaced = preg_replace('~[([][^])]+[\])]~', '@', $yourstring);
Explanation
~[([]
matches an opening bracket or brace[^])]+
matches any chars that are not a closing bracket or brace[\])]
matches a closing bracket or brace@
Upvotes: 1