trim
Kurt
- php
0 tami0 Der Martin0 Jörg Reinholz0 trim - Danke
Kurt
Hallo,
$bezeichnung=trim($fe[4], '"'); // Entfernt " am Anfang und Ende
sollte mir grad alle " am Anfang und Ende der zu behandelnden Strings löschen. Das macht trim
aber grad nicht.
Hat jemand ne Idee, warum?
$bezeichnung=trim($fe[4], '"'); // Entfernt " am Anfang und Ende
$bezeichnung=str_replace('""', '"', $bezeichnung);
$bezeichnung=trim(mysql_real_escape_string($bezeichnung));
echo($fe[4]." -- ".$bezeichnung."<BR>");
ergibt:
"N-Stück 10 m, 1/2"" mini" -- N-Stück 10 m, 1/2" mini"\r\n
und nicht, wie erwartet
"N-Stück 10 m, 1/2"" mini" -- N-Stück 10 m, 1/2" mini\r\n
Schönen Tag. Kurt
hi,
<?php
$testString = '"""aaa"""""';
$result = trim($testString,'"');
var_dump($result);
ergibt:
string(3) "aaa"
mfg
tami
Hi,
$bezeichnung=trim($fe[4], '"'); // Entfernt " am Anfang und Ende
nehmen wir mal an, dass am Ende gar kein Anführungszeichen steht, sondern ein Zeilenumbruch (\r\n), wo immer der auch herkommen mag. Dann wird dort auch nichts entfernt. Die spannende Frage ist also zunächst mal: Was steht zu Beginn *wirklich* in $fe[4]? Meine These ist (in PHP-Notation):
"\"N-Stück 10 m, 1/2\"\" mini\"\r\n"
Dann entfernt der Aufruf von trim() oben nur das Anführungszeichen am Anfang, denn am Ende des Strings ist ja keins.
$bezeichnung=str_replace('""', '"', $bezeichnung);
Das macht aus dem zweimal auftretenden Anführungszeichen in der Mitte nur noch eines.
$bezeichnung=trim(mysql_real_escape_string($bezeichnung));
Und das maskiert alle für die SQL-Schnittstelle problematischen Zeichen. Der erneute Aufruf von trim() ist hier wirkungslos, weil mysql_real_escape_string() den Zeilenumbruch \r\n am Ende bereits durch die Einzelzeichen Backslash, r, Backslash, n ersetzt hat.
So long,
Martin
Moin!
$bezeichnung=trim($fe[4], '"'); // Entfernt " am Anfang und Ende
...
echo($fe[4]." -- ".$bezeichnung."<BR>");
>
> ergibt:
>
> "N-Stück 10 m, 1/2"" mini" -- N-Stück 10 m, 1/2\" mini\"\r\n
Da ich nicht sehe, woher \r\n am Ende kommt VERMUTE ich, dass Dein $fe[4] den Windows-Zeilenumbruch schon enthält, das Quota als nicht das letzte Zeichen ist. Damit stelle als Vorschlag:
`$bezeichnung=trim( trim($fe[4]), '"' );`{:.language-html}
in den Raum.
[Jörg Reinholz](http://www.fastix.org)
Hallo,
Damit stelle als Vorschlag:
$bezeichnung=trim( trim($fe[4]), '"' );
guter Vorschlag, oder noch etwas einfacher mit nur _einem_ Funktionsaufruf:
$bezeichnung=trim($fe[4], "\r\n\t \"");
Ciao,
Martin
PS: Codeauszüge bitte auch richtig kennzeichnen, also PHP nicht als HTML. :-)
Hat jemand ne Idee, warum?
Danke, jetzt wird es klarer.
Am Ende des Strings war gar kein ", daher konnte es natürlich nicht entfernt wreden, dem \r\n sei dank.
Kurt