PHP:查找并替换正则表达式

时间:2014-07-20 08:36:08

标签: php regex

我有一个包含电子邮件地址的变量。

示例:

    $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";

如何在PHP中执行正则表达式查找()和[]之间的所有内容并替换为“@”。所以最终会是这样的:

    $email[1]="email@test.com";
    $email[2]="email@test.com";
    $email[3]="email@test.com";
    $email[4]="email@test.com";
    $email[5]="email@test.com";

我现在拥有的只是((([a-zA-Z] +))|([[a-zA-Z] +]))

2 个答案:

答案 0 :(得分:1)

正则表达式:

[(\[][a-z]+[)\]]

替换字符串:

@

DEMO

示例:

<?php
$string = 'email(alfa)test.com';
$pattern = '~[(\[][a-z]+[)\]]~';
$replacement = '@';
echo preg_replace($pattern, $replacement, $string);
?> //=> email@test.com

答案 1 :(得分:1)

使用此:

$replaced = preg_replace('~[([][^])]+[\])]~', '@', $yourstring);

<强>解释

  • ~[([]匹配左括号或大括号
  • [^])]+匹配任何不是右括号或大括号的字符
  • [\])]匹配右括号或大括号
  • 我们替换为@