Avatar billede pede15 Nybegynder
25. december 2002 - 14:20 Der er 15 kommentarer og
1 løsning

Fjerne sidste stykke af en string opdelt med /'er....how?

Jeg har en string som fx ser således ud:

$str = "123/abc/ab1/cc2/a3c/123";

Så kunne jeg godt tænke mig at vide hvordan jeg kan fjerne /123 fra strengen. Men det skal dog lige siges at længden og indholdet af $str ændrer sig. Dvs der er ikke noget fast antal af "led". Og "navnene" på "ledene" ændrer sig også.

Hvis det kan hjælpe noget, så er det en "stifinder" i PHP...til at hoppe frem og tilbage gennem mapper, slette, oprette osv...

og så skulle man jo gerne kunne gå 1 mappe op. ;o)
Avatar billede basicq Nybegynder
25. december 2002 - 14:30 #1
Prøv dette,
$str = ereg_replace('123/', "", $str);
Avatar billede pede15 Nybegynder
25. december 2002 - 14:35 #2
Sry, den kode ville fjerne det første stykke af $str, og desuden så varierer ereg_replace("string pattern", "", $str).
Avatar billede basicq Nybegynder
25. december 2002 - 14:41 #3
$str = ereg_replace('/123', "", $str);
Avatar billede jensgram Nybegynder
25. december 2002 - 14:42 #4
kig nærmere på

http://dk.php.net/substr
http://dk.php.net/strrpos

så vil du finde, at:

$sidste_slash = strrpos($str, '/');
$str = substr($str, 0, $sidste_slash);
Avatar billede basicq Nybegynder
25. december 2002 - 14:45 #5
$replace = "";
$remove = "$derduvilfjerne";
$string = "123/abc/ab1/cc2/123";
$string = ereg_replace($remove, $replace, $string);
Avatar billede jensgram Nybegynder
25. december 2002 - 14:46 #6
basicq > Jo, men problemet er nok, at pede15 ikke ved, hvad han vil fjerne - kun at det er det efter det sidst /.
Avatar billede pede15 Nybegynder
25. december 2002 - 14:56 #7
jeg ved godt hvad jeg vil fjerne - nemlig det der står efter den sidste / - men navnene på mapperne varierer jo hele tiden, så jeg kan ikke bare sidde og lave noget kode som er tilpasset en bestemt biblioteksstruktur.

jeg havde fundet en masse "næsten" fungerende løsninger, men problemet var at få navnet på den sidste mappe. Men det ser ud som om at Mr. Noname har fat i noget ;o)  prøver det lige
Avatar billede jensgram Nybegynder
25. december 2002 - 14:58 #8
Vil du ikke have det sidste / med, så

$sidste_slash = strrpos($str, '/');
$str = substr($str, 0, $sidste_slash-1);
Avatar billede pede15 Nybegynder
25. december 2002 - 14:59 #9
Det virker sq ;o) - nice Mr. Noname


læg et svar og få dine julepoint ;o)
Avatar billede jensgram Nybegynder
25. december 2002 - 15:00 #10
fair nok
god jul...
Avatar billede pede15 Nybegynder
25. december 2002 - 15:01 #11
$needle = strrpos($current_path, "/");
$path = substr($current_path, 0, $needle);

Det var det der skulle til - SKÅL ;o)
Avatar billede pede15 Nybegynder
25. december 2002 - 15:01 #12
i lige måde ;o)
Avatar billede webmasterdk Praktikant
25. december 2002 - 15:02 #13
uden at have forstand på det, tror jeg du skal kigge på foreach fumktionen...
http://www.php.net/manual/en/control-structures.foreach.php
evt, do og eller du..while
Avatar billede jensgram Nybegynder
25. december 2002 - 15:02 #14
godt så! SKÅL !
Avatar billede webmasterdk Praktikant
25. december 2002 - 15:02 #15
ok, som sagt har jeg jo ikke forstand på det :)
Avatar billede broegaard Nybegynder
25. december 2002 - 15:06 #16
$str = "123/abc/ab1/cc2/a3c/123";
$temp = explode("/", $str);
$str = '';
for($i = 1; $i < count($temp) - 1; $i++) {
    $str.= $temp[$i];
    if($i != count($temp) - 2) $str.= "/";
}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester