Thread CGI-Param werden ungünstig interpretiert (2 answers)
Opened by Hagen at 2010-08-30 15:15

topeg
 2010-08-30 16:32
#141040 #141040
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
Aus meinem Fundus. An dein Problem angepasst:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#!/usr/bin/perl

use strict;
use warnings;
use Data::Dumper;

my %hash=(
  'navi_liste[0][children][0][children][0][id]' => 'navi_item_12',
  'navi_liste[0][children][0][children][1][id]' => 'navi_item_09',
  'navi_liste[0][children][0][children][2][id]' => 'navi_item_08',
  'navi_liste[0][children][0][children][3][id]' => 'navi_item_07',
  'navi_liste[0][children][1][id]' => 'navi_item_11',
  'navi_liste[0][children][2][id]' => 'navi_item_10',
  'navi_liste[1][id]' => 'navi_item_13',
  'navi_liste[2][id]' => 'navi_item_14',
);

my %final=reformat_tree(%hash);
print Dumper(\%final);

sub reformat_tree
{
  my %hash=@_;
  my %return;

  while(my ($key,$value)=each(%hash))
  {
    my @names=('unknown');
    @names=($1) if($key=~s/^(.+?)\[//s);
    $key=~s/\]$//s;
    push(@names, split(/\]\[/,$key));

    my $ref=\\%return;
    for(@names)
    {
      if(/^\d+$/)
      { $ref=\$$ref->[$_]; }
      else
      { $ref=\$$ref->{$_}; }
    }

    $$$ref=$value;
  }

  return %return;
}

View full thread CGI-Param werden ungünstig interpretiert