Punkt im Variablennamen

8

Ich übergebe die Variable mit dem Punkt in der Abfragezeichenkette. PHP ersetzt den Punkt durch Unterpunkt. Also wie kann ich den Variablennamen beibehalten, der einen Punkt im Namen hat

Ссылка

Beispiel.php

$ ret = $ _ REQUEST ['eins.txt']; // funktioniert nicht

    
Kirtan 29.06.2009, 10:30
quelle

3 Antworten

27

Der Grund, warum PHP Ihren Variablennamen von one.txt in one_txt konvertiert, liegt daran, dass Punkte in Variablennamen nicht gültig sind.

Weitere Informationen finden Sie in der PHP-Dokumentation :

  

Variablennamen folgen denselben Regeln   wie andere Etiketten in PHP. Ein gültiger   Variablenname beginnt mit einem Buchstaben oder   Unterstrich, gefolgt von einer beliebigen Anzahl von   Buchstaben, Zahlen oder Unterstriche. Als ein   regulärer Ausdruck wäre es   so ausgedrückt:   '[a-zA-Z_ \ x7f- \ xff] [a-zA-Z0-9_ \ x7f- \ xff] *'

Sie können entweder die Änderung ( . bis _ ) berücksichtigen und nach $_REQUEST['one_txt'] suchen oder Ihr HTML-Formular stattdessen einen gültigen Variablennamen übergeben lassen.

Bearbeiten:

Um Michael Borgwardts Kommentar weiter zu verfolgen, hier ist der Text aus der PHP-Dokumentation zum Umgang mit Variablen aus externe Quellen :

  

Punkte in eingehenden Variablennamen

     

Normalerweise ändert PHP nicht die   Namen von Variablen, wenn sie sind   in ein Skript übergeben. Wie auch immer, es   sollte beachtet werden, dass der Punkt (Zeitraum,   Punkt) ist kein gültiges Zeichen in   ein PHP-Variablenname. Aus dem Grund,   sieh es dir an:

%Vor%      

Nun, was der Parser sieht, ist a   Variable namens $ varname, gefolgt von   der String-Verkettungsoperator,   gefolgt von der Barestring (d.h.   nicht aufgeführte Zeichenfolge, die nicht übereinstimmt   jeder bekannte Schlüssel oder reservierte Wörter)   "ext". Offensichtlich hat dies nicht   das beabsichtigte Ergebnis.

     

Aus diesem Grund ist es wichtig,   Beachten Sie, dass PHP automatisch wird   Ersetzen Sie alle Punkte in der eingehenden Variable   Namen mit Unterstrichen.

Es ist in der Tat eine PHP-spezifische Sache.

    
Carlos Lima 29.06.2009 10:40
quelle
6

Verwenden Sie $ _SERVER ['QUERY_STRING']

%Vor%

Ergebnis für Ihr Beispiel     Array ([one.txt] = & gt; on [zwei.txt] = & gt; on)

    
PossibleSolution 06.01.2012 19:48
quelle
4

Die PHP-Entwickler haben dies implementiert, um register_globals () zu unterstützen, aber wenn sie länger als eine Sekunde pausiert hätten, um die Konsequenzen zu berücksichtigen, hätten sie nur die importierten Namen in den globalen Variablen-Namespace geändert, nicht in $ _POST selbst . Es gibt keinen Grund, die Anforderungsvariablen selbst zu ändern ... nun, abgesehen davon, dass PHP nicht in der Lage ist, Standard-Formularübergaben zu handhaben.

Hier ist auch die Lösung für POST-Variablen, die wahrscheinlich für mehr Benutzer schwieriger ist als die GET-Lösung:

%Vor%     
Wil Barath 20.08.2014 18:03
quelle

Tags und Links