Ankündigung

Einklappen
Keine Ankündigung bisher.

substr() Verschachtelung mit strpos() und strrpos() ?

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #16
    Zitat von hellbringer Beitrag anzeigen
    Der interessiert sich nicht dafür, ob irgendwo ein if() "zu viel" steht.
    Also wer es genau wissen will: Ich hatte mir bereits die Mühe gemacht alle strpos() und strrpos() durch eigene Funktionen auzutauschen, die bei einem false ein 0 liefern. Diese Funktion könnte nach belieben angepasst werden, oder es könnten auch je zwei Funktionen für unterschiedliche Szenarien sein. Allerdings habe ich auch kein Interesse daran den Code endlos aufzublasen mit eigentlich überflüssigen Code.

    Kommentar


    • #17
      Zitat von psoido Beitrag anzeigen
      Also wer es genau wissen will: Ich hatte mir bereits die Mühe gemacht alle strpos() und strrpos() durch eigene Funktionen auzutauschen, die bei einem false ein 0 liefern.
      Sowas fände ich hochgradig verwirrend. Eine Funktion, die das gleiche Ergebnis liefert, auch wenn mal der Suchwert vorkommt und mal nicht vorkommt?

      Kommentar


      • #18
        Code, der garantiert, dass eine Funktion die richtigen Parameter erhält, ist nicht überflüssig.

        Kommentar


        • #19
          Zitat von hellbringer Beitrag anzeigen
          Sowas fände ich hochgradig verwirrend.
          Sieh es mal im Zusammenhang mit substr(). Zudem kann ich das beliebig nach meinen Vorstellungen anpassen.

          Kommentar


          • #20
            Zitat von psoido Beitrag anzeigen
            Also wer es genau wissen will: Ich hatte mir bereits die Mühe gemacht alle strpos() und strrpos() durch eigene Funktionen auzutauschen, die bei einem false ein 0 liefern.
            0, also die Stelle 0 ist in PHP immer das erste Zeichen, die erste Stelle oder [0] Wert eines Arrays. Das würde die Logik brechen. Nur so am Rande erwähnt.
            The string "()()" is not palindrom but the String "())(" is.

            Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
            PHP.de Wissenssammlung | Kein Support per PN

            Kommentar


            • #21
              Zitat von psoido Beitrag anzeigen
              Zudem kann ich das beliebig nach meinen Vorstellungen anpassen.
              Man schreibt Code für Menschen. Also auch für andere Menschen, und nicht nur für sich selber. Man sollte immer im Hintergedanken haben, ob jemand anders das sofort so verstehen würde, was man da schreibt.

              Kommentar


              • #22
                Leute, denkt doch mal mit! substr() tut schon jetzt das Gleiche als wenn ein Wert als false = 0 wäre!

                Kommentar


                • #23
                  Zitat von psoido Beitrag anzeigen
                  Leute, denkt doch mal mit! substr() tut schon jetzt das Gleiche als wenn ein Wert als false = 0 wäre!
                  Darum gehts doch gar nicht. Eine Funktion, die "seltsam" arbeitet sollte nicht mit einer anderen Funktion, die ebenfalls seltsam arbeitet, ausgeglichen werden. Du machst die Verständlichkeit des Codes dadurch nur schlechter statt besser.

                  Kommentar


                  • #24
                    Hier jetzt ein Nachtrag. Vielleicht hilft es dem ein oder anderen mal irgendwann.
                    Dieses substr() mit strpos() oder strrpos() hat mich jetzt doch noch ins Boxhorn gejagt, nach der Umstellung von mysqli auf PDO Prepared Statements, indem ich etwas übersehen hatte, nach dem Motto, wenn es funktioniert, wird es schon richtig sein, betreffend eine einzige (Seite) Stelle, Schwachstelle. mysqli akzeptiert auch ein false als Wert, bzw. verwertet das als "" leeren String, was in meinem Fall insoweit korrekt war. PDO Prepared Statements streikt bei einem Wert mit false und breakt das Script. Das bedeutet wohl, dass PDO Prepared Statements Werte mit booleans als solche verwertet und nicht in leere Strings oder sonstwas umwandelt. Für was das unter Umständen gut sein soll, weiß ich im Moment nicht. DBs können mit booleans wenig anfangen.

                    Kommentar


                    • #25
                      Zitat von psoido Beitrag anzeigen
                      DBs können mit booleans wenig anfangen.
                      Das stimmt überhaupt nicht. Stell doch nicht immer so wilde und spekulative Behauptungen auf.

                      Kommentar


                      • #26
                        OK, ich korrigiere, weil nicht "", sondern ''.
                        mysqli:
                        $value = false;
                        "SELECT * FROM table WHERE column='" . $value . "'";
                        Was passiert?
                        hellbringer, du schaffst es nicht. Lass es einfach sein.

                        Kommentar


                        • #27
                          Zitat von psoido Beitrag anzeigen
                          hellbringer, du schaffst es nicht. Lass es einfach sein.
                          Richtig, ich schaffe es nicht, dass du es verstehst. Aber da sehe ich die Ursache eher an deiner Seite und nicht an meiner.

                          Kommentar


                          • #28
                            http://troels.arvin.dk/db/rdbms/#data_types-boolean

                            Kommentar


                            • #29
                              Zitat von psoido Beitrag anzeigen
                              Code:
                              $value = false;
                              "SELECT * FROM table WHERE column='" . $value . "'";
                              Man muss es halt auch richtig machen.

                              Code:
                              SELECT * FROM table WHERE column='false';
                              VS
                              Code:
                              SELECT * FROM table WHERE column=false;
                              Fällt dir was auf?

                              Hier zB auch ein Test im fiddle. http://sqlfiddle.com/#!9/5f9ab/5
                              Die erste Abfrage im fiddle findet alle, die zweite - so wie bei dir oben - nichts.

                              LG
                              The string "()()" is not palindrom but the String "())(" is.

                              Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                              PHP.de Wissenssammlung | Kein Support per PN

                              Kommentar


                              • #30
                                Zitat von hausl Beitrag anzeigen
                                Man muss es halt auch richtig machen.

                                Code:
                                SELECT * FROM table WHERE column='false';
                                Das üben wir nochmal

                                PHP-Code:
                                $value false;
                                "SELECT * FROM table WHERE column='" $value "'"
                                ->

                                PHP-Code:
                                SELECT FROM table WHERE column=''

                                psoido versuch nicht irgendwelche Eigenheiten von PHP auszunutzen. Du schießt dir damit nur in den eigenen Fuß. Das was PHP einfach macht, macht gleichzeitig auch schwer. PHP verfolgt/verfolgte lange das Konzept "Hauptsache es funktioniert irgendwie". Für soldien Code ist das absolutes gift.
                                So ein quatsch wie "substr('sfsfsd', false);" ist völlig Kontraproduktiv. Die Annahme von PHP "False? Da ist bestimmt 0 mit gemeint." ist völliger Bullshit! Bei sowas muss ein harter Fehler kommen, der unbehandelt zum Abbruch führt. Das ist in meinen Augen zu 100% ein Zeichen für ein Bug im Code.

                                Kommentar

                                Lädt...
                                X