jm: Stringfunktion

Hallo,

ich bin auf der Suche nach einer Stringfunktion, mit welcher ich von einem String rechts 4 Zeichen abschneiden kann. Es geht speziell um Dateinamen, wie "test.doc"! Ich möchte aber nur "test" haben.

Ich habe nur Funktionen gefunden, wo ich das abgeschnittene speichern kann und da ich nicht weiß wie lang der Dateiname ist, kann ich auch nicht den Namen abschneiden. Könnte zwar die Stringlänge bestimmen, aber vielleicht geht das auch einfacher.
Kann mir jemand helfen und eine geeignete Funktion sagen???

Viele Grüße und Danke
jm

  1. Hi jm,

    ich bin auf der Suche nach einer Stringfunktion, mit welcher ich von einem String rechts 4 Zeichen abschneiden kann. Es geht speziell um Dateinamen, wie "test.doc"! Ich möchte aber nur "test" haben.

    Wenn der Dateiname keine weiteren Punkte enthält, könntest du es mit explode() versuchen, dann hast du den Dateiname in $array[0], bzw. wenn es mehrere Punkte sind, müsstest du das letzte Array Element (mit count() arbeiten) rauslöschen und dann per implode() den Rest wieder zusammenfügen.

    Ist die Dateiendung bekannt (z.B. immer .doc) sollte es auch mit basename() gehen (nicht ausprobiert), wo du als zweiten Parameter doc mit übergibst.

    Ich habe nur Funktionen gefunden, wo ich das abgeschnittene speichern kann und da ich nicht weiß wie lang der Dateiname ist, kann ich auch nicht den Namen abschneiden. Könnte zwar die Stringlänge bestimmen, aber vielleicht geht das auch einfacher.

    Du weißt aber schon, dass du bei substr() auch ganz einfach nur die letzen X Zeichen rausholen kannst?

    MfG, Dennis.

    --
    Mein SelfCode: ie:{ fl:{ br:^ va:) ls:< fo:) rl:( n4:& ss:) de:> js:( ch:{ sh:( mo:} zu:|
    Zufällige Hinweise:
    ------------------------
    Fuer die Neulinge: Auf viele Fragen findet man eine
    Antwort im </archiv/>, das man auch durchsuchen kann
    http://suche.de.selfhtml.org/
    1. Hi Dennis,

      Du weißt aber schon, dass du bei substr() auch ganz einfach nur die letzen X Zeichen rausholen kannst?

      Ja, das wusste ich schon. Dachte ja auch das ich das mit dieser Funktion machen kann. Aber was nützen mir die letzten x-Zeichen?? Ich brauche ja leider die davor.

      Gruß
      jm

      1. Hello,

        Du weißt aber schon, dass du bei substr() auch ganz einfach nur die letzen X Zeichen rausholen kannst?

        Ja, das wusste ich schon. Dachte ja auch das ich das mit dieser Funktion machen kann. Aber was nützen mir die letzten x-Zeichen?? Ich brauche ja leider die davor.

        So hat Dennis das bestimmt auch gemeint. Substr() kann einen beliebigen zusammenhängenden Teilstring aus dem Gesamtstring extrahieren.

        Harzliche Grüße aus http://www.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
        1. Hi Tom,

          So hat Dennis das bestimmt auch gemeint. Substr() kann einen beliebigen zusammenhängenden Teilstring aus dem Gesamtstring extrahieren.

          Ja, aber abgesehen davon hier mal noch kurz ein Denkanstoß, wie man es machen könnte, wenn man die letzten drei Zeichen hätte (ungetestet):

          $str = "mydata.doc";                   //Filename

          $type = substr($str, -4);              //Type des Filenames herrausfinden

          $name = str_replace($type, "", $str);  //Type ersetzen durch ""
                                                 //Somit bleibt der Name ohne Type übrig

          Aber das ist natürlich recht umständlich so, es ist da doch wesentlich einfacher pathinfo() zu nehmen (oder basename(), läuft aufs gleiche hinaus).

          MfG, Dennis.

          --
          Mein SelfCode: ie:{ fl:{ br:^ va:) ls:< fo:) rl:( n4:& ss:) de:> js:( ch:{ sh:( mo:} zu:|
          Zufällige Hinweise:
          ------------------------
          Sinnvolles Zitieren: Man zitiert nur Teilsaetze des Vorposters
          auf die man sich bezieht! Nicht einfach alles.
  2. Hello,

    ich bin auf der Suche nach einer Stringfunktion, mit welcher ich von einem String rechts 4 Zeichen abschneiden kann. Es geht speziell um Dateinamen, wie "test.doc"! Ich möchte aber nur "test" haben.

    Soll nur "*.doc" abgeschnitten werden, oder auch anderslautende Extensions?

    Den Hinweis auf basename() hast Du ja schon bekommen. Die Funktion kannst Du gut mit pathinfo() kombinieren. http://de.php.net/manual/de/function.pathinfo.php

    Harzliche Grüße aus http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    1. Hi Tom,

      Soll nur "*.doc" abgeschnitten werden, oder auch anderslautende Extensions?

      Es soll nur ".doc" abgeschnitten werden. Mehr nicht!

      Gruß
      jm

      1. Hello,

        Soll nur "*.doc" abgeschnitten werden, oder auch anderslautende Extensions?

        Es soll nur ".doc" abgeschnitten werden. Mehr nicht!

        Dann kannst Du

        $neuerName = basename($alterName,'.doc');

        oder

        $neuerName = substr($alterName,0,-4);

        benutzen.

        Das beste wird sein, Du probierst mal ein bisschen mit den Funktionen herum; unterschiedliche Eingangswerte etc. Der Vorteil bei basename() mit 2. Paramter ist, das wirklich nur der Basis-Namensbestandteil übrig bleibt. Wenn die Daten 'von draußen' kommen, ist das immer sicherer.

        Harzliche Grüße aus http://www.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
        1. $neuerName = basename($alterName,'.doc');
          oder
             $neuerName = substr($alterName,0,-4);

          Mit substr() hat es erstmal funktioniert. Ich schaue mir das aber nochmal in Ruhe an und überdenke deinen Rat zu basename().
          Vielen Dank.

          jm

          1. Hallo!

            Mit substr() hat es erstmal funktioniert. Ich schaue mir das aber nochmal in Ruhe an und überdenke deinen Rat zu basename().
            Vielen Dank.

            bedenke dass nicht alle Dateiendungen 3 Zeichen lang sind, z.B. ".jpeg". Dieses Problem umgeht pathinfo() z.B.

            Grüße
            Andreas

            --
            SELFHTML Linkverzeichnis: http://aktuell.de.selfhtml.org/links/
  3. Moin!

    du könntest aber auch mit strrpos() (achtung mit doppel "r") die position des letzten punktes im dateinamen auslesen, und dann einfach mit substr() nur den dateinamen bis zum letzten punkt ausgeben.

    tschüssi
    ichen

  4. Hallo,

    auch hallo,

    wie wärs mit:
    $shortstring = substr($longstring, 0, strlen($longstring)-4);

    gruss aus berlin, volker