Problem mit der Übergabevon eckigen Klammern

Hallo,
ich habe einen Parser, der aus einer bestimmten Eingabe Daten herausliest
und dann an ein Php-Skript weitergibt, wo diese Daten in eine Datenbank
geschrieben werden.
Der Inhalt besteht aus einem oder mehreren Arrays, auf die über Strings als
Index zugegriffen wird. Und mit diesen Strings bekomme ich Probleme, wenn
sie eckige Klammern enthalten.
Die Übergabe des Inhalts erfolgt in folgender Form
&inhalt[Schlüssel][]=1&inhalt[Schlüssel][]=2&...
und wird mit POST übertragen. Dardurch habe ich erreicht, dass in Php gleich
ein Array mit den Werten erstellt wird, die ich über die Schlüssel abfragen
kann.
Wenn nun aber der Schlüssel z.B "Test[stri]ng" ist, funktioniert das ganze
nicht mehr. Nach der Kodierung im Parser wird dann folgender String
übergeben:
&inhalt[Test%5Bstri%5Dng][]=1&inhalt[Test%5Bstri%5Dng
[]=0&inhalt[Test%5Bstri%5Dng][]=0

Das Ergebins dieses Aufrufs sieht, wenn ich ihn mit von phpinfo ausgeben
lasse etwa so aus:
Array
(
[Test[stri] => 0
)

Ich habe mittlerweile keine Ahung mehr, woran es liegen könnte, oder wie ich
das Problem umgehen könnte. Alle anderen Sonderzeichen machen mir keine
Probleme, nur diese eckigen Klammern.
Weiß hier jemand was da schief läuft, oder wie man das Problem lösen kann?

Mit freundlichen Grüßen

Martin
Martin Duske [ Do, 29 November 2007 18:30 ] [ ID #1882016 ]

Re: Problem mit der Übergabe von eckigen Klammern

Martin Duske wrote:


> Wenn nun aber der Schlüssel z.B "Test[stri]ng" ist, funktioniert das ganze
> nicht mehr. Nach der Kodierung im Parser wird dann folgender String
> übergeben:
> &inhalt[Test%5Bstri%5Dng][]=1&inhalt[Test%5Bstri%5Dng
> []=0&inhalt[Test%5Bstri%5Dng][]=0
>
> Das Ergebins dieses Aufrufs sieht, wenn ich ihn mit von phpinfo ausgeben
> lasse etwa so aus:
> Array
> (
> [Test[stri] => 0
> )

Wer hätte das gedacht! :-)
Mich wundert das da überhaupt was rauskommt. Nutz doch einfach so wie es
üblich ist informatikgerechte Namensgebungen und verlagere die
Informationen welche Du als Name nutzenwillst dahin wo sie hingehören.
=> in den Wert.

^[A-Za-Z_][A-Za-z0-9_]*$

Das es bei Dir zu dieser Notwendigkeit kommt zeigt das zu irgendwo nen
mächtigen Schnitzer im Design Deiner Anwendung hast.

Ich bin zu faul jetzt erst durch die RFC zu suchen ob denn da nicht auch
vom Protokoll Restriktionen vorliegen die Du überscheitest. Aber das was
Du da machst ist so auf jeden Fall kaputt.

MfG, Ulf

--
_,
_(_p> Ulf [Kado] Kadner
\<_)
^^
Ulf Kadner [ Do, 29 November 2007 21:34 ] [ ID #1882018 ]
PHP » de.comp.lang.php.misc » Problem mit der Übergabevon eckigen Klammern

Vorheriges Thema: URL bei ContentDisposition
Nächstes Thema: Kleine Umfrage Frameworks