1

我正在使用正则表达式来执行查找并用 Dreamweaver 替换。我遇到了一些困难。这就是我的页面中的内容(请注意,存在语法错误,因为我需要在字符串末尾添加一个括号)。

$email=htmlspecialchars(mysql_real_escape_string($_POST['email']);      
$name=htmlspecialchars(mysql_real_escape_string($_POST['name']);    

我正在尝试执行查找和替换,这将产生:

$email=htmlspecialchars(mysql_real_escape_string($_POST['email']));                                                    
$name=htmlspecialchars(mysql_real_escape_string($_POST['name']));

这就是我用来执行查找的内容。它似乎替换了太多文本(它从 $email 变量中的 $_POST 开始,但一直持续到 $name 变量的 $_POST)

  • 查找:\$_POST['([^<]*)']
  • 替换:$_POST['$1'])

我最终得到了这个:

$email=htmlspecialchars(mysql_real_escape_string($_POST['email']);      
$name=htmlspecialchars(mysql_real_escape_string($_POST['name']));   

如您所见,它只修复了最后一个实例(这是因为 find 函数选择了从 $_POST['email'] 一直到 $_POST['name'] 的两行)。有想法该怎么解决这个吗?谢谢!

4

1 回答 1

1

添加一个问号使其不贪婪。此外,您需要转义要匹配的 [ 和 ] 字符。

Find: \$_POST\['([^<]*?)'\]
Replace: $_POST['$1'])

或者,或者,使用 ' 字符而不是 < 字符来匹配引号内的值:

Find: \$_POST\['([^']*)'\]
Replace: $_POST['$1'])
于 2012-12-03T01:50:50.577 回答