【问题标题】:Notepad++ - Replace all $_POST elements that don't already contain strip_tags()Notepad++ - 替换所有尚未包含 strip_tags() 的 $_POST 元素
【发布时间】:2014-06-29 14:09:13
【问题描述】:

是否可以用 strip_tags($_POST['diffentOnEachPage']) 替换所有单个 PHP $_POST['diffentOnEachPage'] 元素

大约 50% 的 $_POST 元素已经包含 strip_tags() 但有些没有。

在不找到每一个并单独添加 strip_tags() 的情况下,最好的方法是什么? - 理想情况下使用记事本++

【问题讨论】:

  • 也许您可以利用这个机会删除所有那些strip_tags() 电话。它是有史以来被滥用最多的 PHP 函数之一。

标签: php search replace notepad++


【解决方案1】:

使用搜索和替换。

搜索 (\$_POST\['.*'\]) 并替换为 strip_tags(\1)

【讨论】:

  • 这将匹配 strip_tags($_POST['diffentOnEachPage']),导致 strip_tags(strip_tags$_POST['diffentOnEachPage'])
【解决方案2】:

另一种方法是从任何地方删除它,然后就这样做

foreach ($_POST as $key => $value){
   $_POST[$key] = strip_tags($value);
}

【讨论】:

    【解决方案3】:

    由于您已经出现了 strip_tags($_POST['baz']),因此您需要注意不要将 strip_tags 添加到这些位置。为此,您需要对 'strip_tags' 进行负面的后视,并且只替换剩余的实例。

    另一个问题 - $_POST['foo'] 包裹在一个不同的函数中 - 你会希望在包裹时保留尾随 )。

    这应该可以解决问题。我敢肯定这可能会以多种其他方式破坏,但比我更聪明的人可以解决这个问题:)

    我在 Notepad++ 6.5.1 上对此进行了测试。

    查找内容:

    (?<!strip_tags\()(\$_POST\['.*'\])
    

    替换为:

    strip_tags\((\1)\)
    

    输入:

    $_POST['foo']
    strip_tags($_POST['baz'])
    another_function($_POST['bar'])
    

    输出:

    strip_tags($_POST['foo'])
    strip_tags($_POST['baz'])
    another_function(strip_tags($_POST['bar']))
    

    【讨论】:

      猜你喜欢
      • 2011-04-03
      • 2017-01-27
      • 1970-01-01
      • 1970-01-01
      • 2016-12-12
      • 2011-08-29
      • 2018-07-17
      • 2013-09-11
      • 2011-06-26
      相关资源
      最近更新 更多