【问题标题】:Grep and replace form contentgrep 和替换表单内容
【发布时间】:2012-05-15 13:30:26
【问题描述】:

致力于识别和调整表单内容条目。 提交表单时,我正在使用 grep 消除数组中的值:

# Get the input
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});

# The following zaps entire value containing the item(s) grepped.
  @OrigArray = split(/&/, $buffer);
  @pairs = grep(!/kartridgeclub|bubba.org|\.ru/i, @OrigArray);

但我更愿意确定哪些不需要的字符序列 已输入,并且(无论输入哪一个),包括 一个条件语句,它会产生唯一的“返回页面” 如果提交了任何不需要的字符序列,则为文本。

我认为,我不能使用简单的替换来代替 grep,因为 我需要替换包含不需要的字符的整个数组元素。

换句话说,用户输入了一堆垃圾-总是包含-some.org-with-ru 扩展名(或 bubba.org 等)到表单字段中。我如何识别哪个 他输入的 grep 中的短语?然后用我的短语替换它 选择(而不是仅仅从数组中删除它)并产生不同的 此用户的“谢谢”页面?

谢谢。

【问题讨论】:

  • 您是否有理由不使用CGI 之类的模块来处理表单输入?
  • 2012 年 5 月 15 日,星期二...非常感谢所有回答的人。一个奇怪的服务器问题使我无法继续前进,但我要感谢您的所有帮助和建议。

标签: regex perl replace grep


【解决方案1】:

Cfreak 的问题很实用:使用 CGI 处理表单的输入。使用 CGI 的 param 函数,检查表单的“不需要的字符序列”参数,然后根据您的发现进行相应的更改和/或分支。例如:

use strict;
use warnings;
use CGI qw(:standard);
use 5.010;

my $input_field = param('input_field');

given(lc $input_field) {
    when(/kartridgeclub/) {
        print 'kartridgeclub';
        # do something else
    }
    when(/bubba\.org\b/) {
        print 'bubba.org';
        # do something else
    }
    when(/\.ru\b/) {
        print '.ru';
        # do something else
    }
    when(/this|that/) {
        print 'this or that';
        # do something else
    }
    default {
        print 'Your entry seems OK.';
        # do something else
    }
}

【讨论】:

    【解决方案2】:

    虽然我完全同意您最好使用 CGI 的其他帖子,但我认为这条线应该可以实现您想要的。

    my %pairs = map { $_ => ($_ =~ /kartridgeclub|bubba.org|\.ru/i ? 'invalid' : 'valid')} @orig_array;
    

    【讨论】:

      【解决方案3】:

      只是不要使用 grep。使用旧的 for 循环并编写一些代码。

      for my $i (0 .. $#OrigArray) {
          my $pair = $OrigArray[$i];
          if ($pair =~ m/whatever/) {
              # you're welcome to change $OrigArray[$i] here
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-03-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-29
        • 1970-01-01
        相关资源
        最近更新 更多