Harald: substr-problem

Hi!

Was ist hier falsch wenn ich als ergebnis "imm3.jpg" erhalten will?
$str = "fdgdg[88]imm3.jpg";
$ergebnis = substr($str,strpos($str,'[88]')+4, -0));

Danke
Harald

  1. hallo,

    Was ist hier falsch wenn ich als ergebnis "imm3.jpg" erhalten will?
    $str = "fdgdg[88]imm3.jpg";
    $ergebnis = substr($str,strpos($str,'[88]')+4, -0));

    Die Anzahl der schließenden Klammern. Das sollte dir aber auch error_reporting(E_ALL); einigermaßen zuverlässig sagen können.

    Grüße aus Berlin

    Christoph S.

    --
    Visitenkarte
    ss:| zu:) ls:& fo:) va:) sh:| rl:|
    1. nö, das is es leider nicht :-(
      Da hab ich nur noch ne array-Klammer drüber, die ich unabsichtlich nicht gelöscht hab...
      sry

      lg
      Harald

      1. Hi!

        Was ist hier falsch wenn ich als ergebnis "imm3.jpg" erhalten will?
        $str = "fdgdg[88]imm3.jpg";
        $ergebnis = substr($str,strpos($str,'[88]')+4, -0);
        (kleinen Fehler is hier ausgebessert)

        Danke
        Harald

        1. hallo Harald,

          Was ist hier falsch wenn ich als ergebnis "imm3.jpg" erhalten will?
          $str = "fdgdg[88]imm3.jpg";
          $ergebnis = substr($str,strpos($str,'[88]')+4, -0);
          (kleinen Fehler is hier ausgebessert)

          Was bewegt dich jetzt, innerhalb von 35 Minuten exakt dieselbe Frage nochmals zu stellen? War die nicht in deinem Ausgangsposting deutlich genug formuliert?

          Grüße aus Berlin

          Christoph S.

          --
          Visitenkarte
          ss:| zu:) ls:& fo:) va:) sh:| rl:|
      2. hallo,

        nö, das is es leider nicht :-(

        Na gut. Dann schaust du dir eben mal der Reihe nach die Funktionen an, die du einsetzt und prüfst nach, was die eigentlich tun:

        $ergebnis = substr($str,strpos($str,'[88]')+4, -0));

        strpos($str,'88') "Sucht das erste Vorkommen des Suchstrings". Was ist dein Suchstring, und was wird also zurückgegeben?
        substr "Gibt einen Teil eines Strings zurück" - in deinem fall das, was

        <Abbruchmeldung>
        hi,
        da du dich jetzt mit https://forum.selfhtml.org/?t=135084&m=876667 als Drängler und als sehr ungeduldig erwiesen hast, habe ich keine Lust mehr, an dieser Antwort weier herumzudenken und sie so weit auszuformulieren, daß sie einer effektiven Lösung deines Problems nahekommt.
        </Abbruchmeldung>

        Grüße aus Berlin

        Christoph S.

        --
        Visitenkarte
        ss:| zu:) ls:& fo:) va:) sh:| rl:|
      3. Hallo Harald,

        Du hast eine Klammer zuviel, die -0 brauchst Du nicht
        vorher:  $ergebnis = substr($str,strpos($str,'[88]')+4, -0));
        nachher: $ergebnis = substr($str,strpos($str,'[88]')+4);

        Gruß,

        Dieter

        1. hallo,

          Du hast eine Klammer zuviel, die -0 brauchst Du nicht
          vorher:  $ergebnis = substr($str,strpos($str,'[88]')+4, -0));
          nachher: $ergebnis = substr($str,strpos($str,'[88]')+4);

          Das ist so ziemlich genau das, worauf meine Antwort hinauslaufen sollte. Ich wollte es bloß noch ein klitzekleines bißchen genauer machen und etwas "SELF" hinzugeben, wozu ich dann aber wegen der Drängelei keine Lust mehr hatte.

          Grüße aus Berlin

          Christoph S.

          --
          Visitenkarte
          ss:| zu:) ls:& fo:) va:) sh:| rl:|
          1. Hallo Christoph,

            Ich empfand das nicht so sehr als Draengeln, sonderen eher als Korrektur (die Klammer war ja weg und die Sache mit -0 war ihm wohl nicht klar).

            Gruß,

            Dieter

            1. hallo Dieter,

              Ich empfand das nicht so sehr als Draengeln, sonderen eher als Korrektur (die Klammer war ja weg und die Sache mit -0 war ihm wohl nicht klar).

              Wir gehen sicher beide davon aus, daß der "Fehler" erstens in der Klammer und zweitens in dem -0 liegt. Das dürfte der OP inzwischen auch mitbekommen haben, so daß ihm erstmal geholfen ist.

              Aber ich habe zuerst auch das "noch immer nicht gelöst" gelesen. Und das ist in meinen Augen tatsächlich eine ungerechtfertigte Drängelei 35 Minuten _nach_ dem OP, die ich folgerichtig als "inneres Doppelposting" bezeichnen mußte.

              Grüße aus Berlin

              Christoph S.

              --
              Visitenkarte
              ss:| zu:) ls:& fo:) va:) sh:| rl:|
              1. Hallo Christoph,

                Ehrlich gesagt, habe ich dieses "noch immer nicht gelöst" nicht mal gesehen. Und wenn ich gesehen, dann haette ich es wahrscheinlich ignoriert. Sorry, mir ist das nicht wichtig genug, darueber zu diskutieren.

                Gruß,

                Dieter

                1. h,

                  Ehrlich gesagt, habe ich dieses "noch immer nicht gelöst" nicht mal gesehen.

                  Ups. Wie hast du dann sein posting (bzw. meinen Verweis dorthin) anklicken können? Stell den "refresh"-Wert mal einfach ein bißchen kürzer ein.

                  Und wenn ich gesehen, dann haette ich es wahrscheinlich ignoriert. Sorry, mir ist das nicht wichtig genug, darueber zu diskutieren.

                  Ist es tatsächlich nicht. Mich hat es in diesem Fall nur wirklich gestört, weil ich bereits fast eine halbe Stunde im PHP-Handbuch unterwegs war und an einer einigermaßen sachlich richtigen Antwort herumgefummelt habe - da wirkte dann das "noch immer nicht gelöst" auf mich genauso, als ob Chefchen sich neben den Schreibtisch gestellt und "dalli, dalli" befohlen hätte.

                  Gelegentlich gibt es ja Fragestellungen, auf die man nicht bloß mit einem RTFM reagieren möchte. Das war hier der Fall. Aus meiner Sicht. Du kannst das gern anders sehen. Ich wollte nach meinem ersten "Schnellschuß" und der ebenfalls sehr schnell erfolgten ersten Reaktion des OP ein bißchen "in die Tiefe" gehen. Und glaub mir: auch wenn es bisweilen deutlich anders auszusehen scheint, brauche ich doch manchmal für eine Antwort, wenn sie denn wirklich was taugen soll, eine halbe Stunde, falls ich mit mehreren Verweisen zu irgendwelchen Originalquellen (die ich ja auch erst wieder aufrufen und wenigsten kurz nachlesen muß) daherkommen will. Da stört ein "bist du immer noch nicht fertig?" doch sehr.

                  Grüße aus Berlin

                  Christoph S.

                  --
                  Visitenkarte
                  ss:| zu:) ls:& fo:) va:) sh:| rl:|
                  1. Hallo Christoph,

                    Ups. Wie hast du dann sein posting (bzw. meinen Verweis dorthin) anklicken können?

                    Garnicht noetig gewesen.
                    Ich sehe mit meinen Benutzereinstellungen immer den kompletten Thread, die Postings sind Ihre Verschachtelung entsprechend etwas eingerueckt. Ich fange also mit dem OP an und scrolle fix nach unten. Ueberschriften fallen mir so kaum auf.

                    Gruß,

                    Dieter

                  2. gudn tach!

                    [...] da wirkte dann das "noch immer nicht gelöst" auf mich genauso, als ob Chefchen sich neben den Schreibtisch gestellt und "dalli, dalli" befohlen hätte.

                    dann lass dich doch einfach nicht stressen, sondern ignoriere solche vermeintlichen draenger, schlag ihnen vor, sie sollten sich selbst mal fuer die sache nuetzlich machen oder biete ihnen ein glas holunderwein an, damit sie sich beruhigen oder wenigstens abgelenkt sind. ;-)

                    prost
                    seth

    2. echo $begrüßung;

      Was ist hier falsch wenn ich als ergebnis "imm3.jpg" erhalten will?
      $str = "fdgdg[88]imm3.jpg";
      $ergebnis = substr($str,strpos($str,'[88]')+4, -0));

      Die Anzahl der schließenden Klammern. Das sollte dir aber auch error_reporting(E_ALL); einigermaßen zuverlässig sagen können.

      Solch eine Klammer erzeugt einen hübschen "Parse error". Da das Parsen vor dem Scriptlauf stattfindet, kommt es zu keiner Ausführung von Code, und demzufolge auch nicht zum Aufruf der Funktion error_reporting(). Wenn du die Ausgabe von Parse-Fehlermeldungen unterdrücken möchtest, musst du schon mindestens die Einstellmöglichkeiten der Apache-Verzeichniskonfiguration (landläufig unter .htaccess bekannt) benutzen. Es nützt also andersrum auch nichts, sie im Scriptcode einschalten zu wollen.

      Ansonsten: Wenn man aus einem String einen Teilstring herausschneiden will und als Wert für den die Länge angebenden Parameter 0 (oder -0) angibt wird das Ergebnis auch nur ein String der Länge 0 sein.

      echo "$verabschiedung $name";

      1. hallo dedlfix,

        Wenn man aus einem String einen Teilstring herausschneiden will und als Wert für den die Länge angebenden Parameter 0 (oder -0) angibt wird das Ergebnis auch nur ein String der Länge 0 sein.

        Du hast recht. Das ist das Kernproblem, das der OP in seinem Code stehen hat. Alles andre, was du geschrieben hast, ist (je nach den vorhandenen Bedingungen) "Verhandlungssache" mit dem Server.

        Ich mag mich nicht unbedingt wiederholen. Dasselbe hatte ich, etwas ausführlicher, weiter unten angeben wollen, fand mich dann aber durch die Drängelei zu einem Abbruch veranlaßt.

        Grüße aus Berlin

        Christoph S.

        --
        Visitenkarte
        ss:| zu:) ls:& fo:) va:) sh:| rl:|