Letztes Zeichen

UNC

B1G-Software-Kunde
#1
Ich habe efolgendes Script:
PHP:
$pfad = "/srv/blubb/test/";
$letztes = $pfad{strlen($pfad)-1};
if($letztes != "/")
  $pfad = $pfad . "/";
Die Ausgabe sollte nun "/srv/blubb/test/" lauten. Heraus kommt aber immer "/srv/blubb/test//" Was mach ich falsch? :baby:
 

modig

B1G-Software-Kunde
#2
Hallo,
was Du falsch machst?
Nix, bei mir geht's :D



Hab' nur mal zur Verdeutlichung drei echo's eingefügt

Karsten
 

Horst

B1G-Software-Kunde
#3
Ich hab zwar noch nix mit PHP gemacht, aber ich schätze $pfad{strlen($pfad)-1} liefert nicht das letzte, sondern sondern das Vorletzte Zeichen aus der Zeichenkette.

Also versuche mal:

$pfad = "/srv/blubb/test/";
$letztes = $pfad{strlen($pfad)};
if($letztes != "/")
$pfad = $pfad . "/";

Horst
 

modig

B1G-Software-Kunde
#4
Nun überleg ich grade, was Du eigentlich erreichen willst? *grübel*
Wenn' nur drum geht, das Pfadende zu egalisieren, würde auch

PHP:
$pfad = "/srv/blubb/test/";
$pfad = trim($pfad,"/");
$pfad = "/" . $pfad . "/";
funktionieren.

Grüssle
Karsten

PS. Unabhängig davon ist mir
PHP:
$letztes = substr($pfad, -1, 1);
viel sympathischer, weil universeller...
 
Last edited:

UNC

B1G-Software-Kunde
#5
modig said:
Nun überleg ich grade, was Du eigentlich erreichen willst? *grübel*
Wenn' nur drum geht, das Pfadende zu egalisieren, würde auch

PHP:
$pfad = "/srv/blubb/test/";
$pfad = trim($pfad,"/");
$pfad = "/" . $pfad . "/";
funktionieren.
Du hast es erraten :D
Funktioniert mit trim() sehr gut, Danke! :)
 

modig

B1G-Software-Kunde
#6
Aber aufpassen: trim() schneidet auch den Slash am Anfang ab. Damit kann man sich auch 'schön ins Knie schiessen' ;). Besonders wenn man 'wieder' einen vorn anstellt, obwohl gar keiner dran war 8o

Karsten
 

UNC

B1G-Software-Kunde
#7
modig said:
PS. Unabhängig davon ist mir
PHP:
$letztes = substr($pfad, -1, 1);
viel sympathischer, weil universeller...
Hab nun das gewählt, damit es auch unter Windows funktioniert :rolleyes:
 

modig

B1G-Software-Kunde
#8
UNC said:
...damit es auch unter Windows funktioniert...
*grübel*
Was hat das denn mit 'Windows' zu tun?? Hab alles drei's lokal unter Win2k, PHP 4.3.6 und 'nem Apachen 2.0.49 getestet und nix Problem.

Auch der IIS dürfte mit PHP keine derartigen Probleme haben...

Karsten
 

UNC

B1G-Software-Kunde
#9
Bei Windows siehts so aus: C:/srv/blubb/test/
Also:
PHP:
$pfad = "C:/srv/blubb/test/";
$pfad = trim($pfad,"/");
$pfad = "/" . $pfad . "/";
Dann wäre die Ausgabe /C:/srv/blubb/test/ :rolleyes:
 

modig

B1G-Software-Kunde
#10
Wenn $pfad ein absoluter Pfad ist, hast Du natürlich Recht... :baby:

Karsten

Nur zur Verwirrung: Man könnte das ja auch mittels preg_replace() machen...
 
Last edited:

UNC

B1G-Software-Kunde
#11
modig said:
Wenn $pfad ein absoluter Pfad ist, hast Du natürlich Recht... :baby:

Karsten

Nur zur Verwirrung: Man könnte das ja auch mittels preg_replace() machen...
Man könnte es auch mit Regular Expressions machen... :rolleyes:
 
Top