Hellena: Endziel im Pfad behaltem, rest löschen.

Hallo

Kennt jemand den Code wie ich nur den Namen der Datei am ende  in einen weiteren Befehl übergeben kann.

Beispiel:

$pfad= "http://url.de/1/2/3/hallo.jpg";

mit folgenden code bleibt der Anfang bei $pfad also url.de
$pfad =~ s/^http:////i;
$pfad =~ s/^www.//i;
$pfad =~ s//.*$//gi;

mit welchem code bleibt aber  nur dass Ende hallo.jpg ?

Vielen Dank für eventuelle Hilfe

Hellena

  1. Ungetestet, aber intuitiv etwas in der Richtung von

    $pfad =~ s/^(http://)?(www.)?([\w-]+/)?/gi;

    Grüße.

  2. Hallo Hellena!

    $pfad =~ s/^http:////i;

    Wenn Du Strings durchsuchen möchtest, die bereits Slashs enthalten, sieht es übersichtlicher aus, wenn Du keine Slashs als Delimiter benutzt (denn sonst musst Du wie oben die Slashs im String escapen). Beispiel:

    $pfad =~ s!^http://!!i;

    $pfad =~ s/^www.//i;
    $pfad =~ s//.*$//gi;

    »»

    Du weißt $ bedeutet, in diesem Fall? Und ein gieriger Platzhalter, der Dir alles bis zum Ende "wegfrisst"? Wenn alles bis zum Stringende durchsucht wird und durch nichts ersetzt wird, was bleibt dann übrig?

    Viele Grüße aus Frankfurt/Main,
    Patrick

    --

    _ - jenseits vom delirium - _
    <hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash>
    Nichts ist unmöglich? Doch!
  3. gudn tach!

    $pfad= "http://url.de/1/2/3/hallo.jpg";

    mit welchem code bleibt aber  nur dass Ende hallo.jpg ?

    if($pfad=~m~/([^/]+)$~){
      my $alles_rechts_vom_letzten_slash = $1;
    }else{
      print 'moep!',"\n";
    }

    oder - wenn du die variable $path aendern willst -:

    $pfad=~s~^.*/([^/]+)$~$1~;

    prost
    seth

    1. if($pfad=~m~/([^/]+)$~){
        my $alles_rechts_vom_letzten_slash = $1;
      }else{
        print 'moep!',"\n";
      }

      oder - wenn du die variable $path aendern willst -:

      $pfad=~s~^.*/([^/]+)$~$1~;

      Was machst du damit?
      http://domain.tld/pfad/page.html?1/2/3/4
      oder
      http://domain.tld/pfad/page.html#fragment
      Fragezeichen

      1. gudn tach!

        $pfad=~s~^.*/([^/]+)$~$1~;

        Was machst du damit?
        http://domain.tld/pfad/page.html?1/2/3/4
        oder
        http://domain.tld/pfad/page.html#fragment

        der OP hat deutlich gesagt, dass der dateiname am ende stehe. insofern ist sowas fuer den OP afais uninteressant.

        fuer allgemeinere urls kann man auf bestehende module oder kompliziertere regexps zurueckgreifen.
        z.b. koennte man den url mit URI::Split bzw. manuell vorverarbeiten.

        prost
        seth