Avatar billede Slettet bruger
11. juni 2004 - 10:07 Der er 13 kommentarer og
1 løsning

Hjælp til reg exp

Hej!

Jeg har strengen "/mappe2/mappe1/undermappe 1.1/"

Denne vil jeg gerne dele op i 2 variabler, den ene skal indeholde "/mappe2/mappe1/" den anden skal indeholde "undermappe 1.1/"

Nogen der kan hjælpe?
Avatar billede sostack Nybegynder
11. juni 2004 - 10:10 #1
Er det altid den sidste/dybeste mappe du vil have i variabel 2 og alt resten i variabel 1?

//sostack
Avatar billede dennismp Nybegynder
11. juni 2004 - 10:11 #2
Nu er det godt nok ikke regex (det er ikke nødvendigt)

$parts = explode('/' . $str);

$first  = $parts[0] . '/' .$parts[1] . '/';
$second = $parts[2] . '/';
Avatar billede dennismp Nybegynder
11. juni 2004 - 10:15 #3
eller
$pos = strrpos(substr($str,0,-1),'/');
$first = substr($str,0,$pos);
$second = substr($str,$pos+1);
Avatar billede sostack Nybegynder
11. juni 2004 - 10:19 #4
Eller som function:
<?php
function del_sti($stien)
{
    $tempvar = explode("/", $stien);
    for($i = 0; $i < count($tempvar) - 2; $i++)
    {
        $variabel1 .= "/" . $tempvar[$i];
    }
    $variabel[1] .= "/";
    $i++;
    $variabel[2] = $tempvar[$i] . "/";
    return $variabel;
}

print_r(del_sti( "/mappe2/mappe1/undermappe 1.1/"));
?>

//sostack
Avatar billede Slettet bruger
11. juni 2004 - 11:10 #5
sostack> Ja til dit spørgsmål :)

dennismp> Ouput er lidt forkert, dit script skriver
"/mappe2/mappe1"

"/undermappe 1.1/"

Det er ret vigtigt at de kommer ud "rigtigt" da de skal bruges til at sammensætte nogle stier bagefter.
Avatar billede Slettet bruger
11. juni 2004 - 11:18 #6
sostack> Din virker ikke, men $variabel1 skal vel også være $variabel[1] eller hva?

Men den er der også problemer med ift. for mange/få /
Avatar billede dennismp Nybegynder
11. juni 2004 - 11:19 #7
prøv:

$pos = strrpos(substr($str,0,-1),'/');
$first = substr($str,0,$pos+1);
$second = substr($str,$pos);
Avatar billede Slettet bruger
11. juni 2004 - 11:21 #8
stadig et / for meget i $second
Avatar billede sostack Nybegynder
11. juni 2004 - 11:21 #9
Sorry:
<?php
function del_sti($stien)
{
    $tempvar = explode("/", $stien);
    for($i = 1; $i < count($tempvar) - 2; $i++)
    {
        $variabel[1] .= "/" . $tempvar[$i];
    }
    $variabel[1] .= "/";
    $variabel[2] = $tempvar[$i] . "/";
    return $variabel;
}

$delt = del_sti( "/mappe3/mappe2/mappe1/undermappe 1.1/");
echo "variabel 1 : " . $delt[1] . "<br />";
echo "variabel 2 : " . $delt[2] . "<br />";
?>

//sostack
Avatar billede dennismp Nybegynder
11. juni 2004 - 11:23 #10
ret til
$second = substr($str,$pos+1);
Avatar billede yellow Nybegynder
11. juni 2004 - 11:50 #11
Eller regexp versionen:

$path = "/mappe2/mappe1/undermappe 1.1/";
if( ereg ("^(.+\/)([^\/]+\/)$", $path, $regs) ){
  echo "$regs[1]\n";
  echo "$regs[2]\n";
}
Avatar billede Slettet bruger
11. juni 2004 - 12:36 #12
Jeg endte med at bruge dennismp's udgave, håber det er ok med i andre. Så vil dennismp lægge et svar :)
Avatar billede dennismp Nybegynder
11. juni 2004 - 12:42 #13
Joda
Avatar billede Slettet bruger
11. juni 2004 - 12:52 #14
Tak for hjælpen!
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