Revision: 19154
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at October 16, 2009 16:19 by ptepper
Initial Code
use CGI;
$query = CGI::new();
my %fields_temp = $query->Vars;
my %fields = ();
foreach my $key (keys %fields_temp) {
if ( $key =~ /(.+)\[\]$/ ) { ## Handle PHP style array inputs
if(exists $fields{$1}){
$fields{$1} = $fields{$1} . ",". $fields_temp{$key};
}
else{
$fields{$1} = $fields_temp{$key};
}
}
else {
$fields{$key} = $fields_temp{$key};
}
}
foreach my $key (sort keys %fields) {
unless ($key =~ /(.+)\[\]$/ ){
push(@keys, $key);
push(@values, $fields{$key});
}
}
Initial URL
Initial Description
This is inspired by this http://www.cgi101.com/book/ch5/text.html so I'm using a similar example. In PHP you can combine a set of checkboxes into an array using square brackets like this:
<form>
<input> Red<br>
<input> Green<br>
<input> Blue<br>
<input> Gold<br>
<input>
</form>
PHP does not do this automatically but it's pretty simple to do if you filter by regular expressions.
Initial Title
Process PHP-style array (square brackets) from HTML form in Perl CGI
Initial Tags
php, array, forms, perl
Initial Language
Perl