PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr (https://www.php-resource.de/forum/)
-   PHP Developer Forum (https://www.php-resource.de/forum/php-developer-forum/)
-   -   trim($_POST) möglich? (https://www.php-resource.de/forum/php-developer-forum/52120-trim-_post-moeglich.html)

skalu 20-03-2005 16:17

trim($_POST) möglich?
 
Hi Leute,

folgende Frage: Ich habe ein Script, bei dem mal prinzipiell alle Semikolon ( ; ) im $_POST-Array durch ein Komma ( , ) ersetzt wird. Das mache ich so:

PHP-Code:

$_POST str_replace(";",",",$_POST); 

Nun würde ich gerne auch alle Leerzeichen entfernen, aber bei
PHP-Code:

$_POST trim($_POST); 

bekomme ich die Fehlermeldung: Notice: Array to string conversion in ..../post_replace.php on line 4

Ich nehme an, dass trim eine reine Stringfunktion ist und daher nicht auf das $_POST-Array anwendbar ist. Aber wieso funkt dann str_replace?

Ich habe jetzt im Forum folgenden Code gefunden, daher anscheinend mein Problem löst:

PHP-Code:

while (list($name$value) = each($_POST))
{
    $
$name addslashes(trim($value));


Dieser Code liest doch einfach jeden Eintrag in $_POST aus, entfernt die Leerzeichen und wendet addslashes an und speichert diese dann wieder zurück ins Array und ich kann dann ganz normal mit den veränderten Werten arbeiten, oder?

Danke, Lukas

TobiaZ 20-03-2005 16:21

Wenn ich jetzt wüsste, was dein Problem ist? :confused: Anscheinend konntest du es doch mittels der Suchfunktion beheben.

penizillin 20-03-2005 16:24

Code:

mixed str_replace ( mixed search, mixed replace, mixed subject )
string trim ( string str )

ist der unterschied klar?

skalu 20-03-2005 16:28

Re: trim($_POST) möglich?
 
Hi TobiaZ!

Ich wollte nur den Grund für diesen Notice-Fehler nachfragen.

Zitat:

Original geschrieben von skalu
Ich nehme an, dass trim eine reine Stringfunktion ist und daher nicht auf das $_POST-Array anwendbar ist. Aber wieso funkt dann str_replace?
--> ist aber von penizilin beantwortet worden

Außerdem wollte ich wissen, ob ich das richtig verstanden habe:

Zitat:

Original geschrieben von skalu
Dieser Code liest doch einfach jeden Eintrag in $_POST aus, entfernt die Leerzeichen und wendet addslashes an und speichert diese dann wieder zurück ins Array und ich kann dann ganz normal mit den veränderten Werten arbeiten, oder?
Oder hat das - abgesehen vom trim() und addslashes() - noch weitere Auswirkungen auf meine Variablen, die ich mit den Werten aus z.B. $_POST["test"] hole...

@penizilin
mixed bedeutet also, dass es auf Strings und Arrays anwendbar ist, richtig?

Danke schon mal,
Lukas

TobiaZ 20-03-2005 16:31

so lange du nur trim und addslashes anwendest, hat es auch nur den einfluss.

mixed ist eben mixed. könnte theoretisch auch z.b. int sein, auch wenns in deinem fall keinen sinn machen würe.

skalu 20-03-2005 16:48

okay, danke euch! Eine Frage hätte ich aber noch:

Es ist seltsamerweise ein Unterschied, ob ich mit dieser While-Schleife nun das trim durchführe, oder direkt die Variable mit dem Wert aus $_POST["variable"] trime ($var = $_POST["variable"]; )

Bei der While Schleife wird aus " test " --> 'test ' (also mit einem Leerzeichen am Ende und bei der Variablen direkt ($var = trim($var); ) bekomme ich 'test' (ohne irgendein Leerzeichen.

Was könnte da der Grund sein?

Greetz Lukas

penizillin 20-03-2005 17:07

nichts verstanden, zeig mal den code.

skalu 20-03-2005 17:13

ok ;)

Die ' bei den Ausgaben dienen nur dazu, die Leerzeichen sichtbar zu machen.

Mit diesem Code bekomme ich, wenn der Wert ' test ' in ein Textfeld eingegeben wurde, 'test ' (also mit einem Leerzeichen am Ende).

PHP-Code:

while (list($name$value) = each($_POST))
{
    $
$name trim($value);
}

--> 
$var $_POST["variable"]; 

Mit diesem Code erhalte ich diesen String, wenn ich $var ausgebe: 'test' (ohne Leerzeichen)

PHP-Code:

$var $_POST["variable"];
$var trim ($var); 

Ich hoffe, jetzt habe ich's verständlich genug erklärt :)

Greetz Lukas

penizillin 20-03-2005 17:30

klingt nach unsinn. trim ist trim, und kann nich die hälfte der arbeit verrichten. das wäre zauberei.

Abraxax 20-03-2005 18:13

@skalu

die ' sind schon im string vor dem trim() oder erst zur ausgabe?

skalu 20-03-2005 19:17

@penizilin

ist aber so, tut mir leid ;)

Hier mal der Source-Code, vielleicht hat's da etwas!

post_replace.php

<html>
<head>
<meta http-equiv="Content-Language" content="de">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>test 1</title>
</head>
<body>
<form method="POST" action="post_replace_do.php">
<p>POST REPLACE</p>
<p><input type="text" name="textfeld1" size="20"></p>
<p><input type="submit" value="Absenden" name="B1"><input type="reset" value="Zurücksetzen" name="B2"></p>
</form>
</body>
</html>

post_replace_do.php

<?

while (list($name, $value) = each($_POST))
{
$$name = trim($value);
}

$var = $_POST["textfeld1"];

?>
<html>
<head>
<meta http-equiv="Content-Language" content="de">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>test 2</title>
</head>
<body>
Der Text lautet: '<? echo $var; ?>'
</body>
</html>

@Abraxax

hmm, also die Striche mache ich erst in der Ausgabe, siehe Der Text lautet: '<? echo $var; ?>'

Anscheinend mache ich das etwas falsch...

Tnx, Lukas

penizillin 20-03-2005 19:26

Zitat:

ist aber so, tut mir leid
ist es nicht.

du legst neue variablen an, veränderst dabei kein bit an dem array $_POST. lässt dir zum schluss $_POST["textfeld1"]; ausgeben und wunderst dich, dass es nichts genützt hat.

Code:

Der Text lautet: '<? echo $textfeld1; ?>'

Abraxax 20-03-2005 19:31

sinnfrei (von dir)
PHP-Code:

while (list($name$value) = each($_POST))
{
$
$name trim($value);


sinnvoll(er)
PHP-Code:

while (list($name$value) = each($_POST))
{
if (!
is_array($value))
  
$_POST[$name] = trim($value);



skalu 20-03-2005 19:35

Okay, jetzt verstehe ich. Ich habe in meiner ersten Antwort auf meinen Request nachgefragt, ob die Werte direkt im Array geändert werden.

Dieser Code liest doch einfach jeden Eintrag in $_POST aus, entfernt die Leerzeichen und wendet addslashes an und speichert diese dann wieder zurück ins Array und ich kann dann ganz normal mit den veränderten Werten arbeiten, oder?

Und ich dachte, dass ich dann trotzdem ganz normal den Wert in einer Variablen speichern kann, also mit $var = $_POST["textfeld1"]; , weil der Wert von "textfeld1" ja direkt bearbeitet wurde.

Das war wohl ein Missverständnis, sorry ;)

@Abraxax

Ja, genau! Das war mein Fehler. So funktioniert es wunderbar! Vielen Dank!

Greetz Lukas


Alle Zeitangaben in WEZ +2. Es ist jetzt 12:02 Uhr.

Powered by vBulletin® Version 3.8.2 (Deutsch)
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.0
[c] ebiz-consult GmbH & Co. KG