Maztze: String-Vergleich mit %

Hi zusammen,

habt ihr Ideen, wie ich ein vermeintlich einfaches Problem, ebenso einfach lösen kann. Ich sitz grad auf dem Schlauch:

ich hab einen Suchstring in der Form 'Peter %'

und habe ein String 'Peter Schmidt';

wie kann ich die beiden so vergleichen, dass ich das "Schmidt" rausbekomme? Muss ich da tatsächlich reguläre Ausdrücke bemühen?

Danke & Gruß an alle

  1. wie kann ich die beiden so vergleichen, dass ich das "Schmidt" rausbekomme?

    strpos() und strrpos() ist ein Ansatz - je nachdem ob das @ vorne oder hinten in dem String zu finden ist, durchsuchst du nochmal mit strpos() oder strrpos() die zeichenkette und prüfst, ob der string deinem Wunsch entspricht.

    Muss ich da tatsächlich reguläre Ausdrücke bemühen?

    Wäre vermutlich eleganter aber nicht notwendig.

    1. Hm, ja, danke auf jeden Fall, aber ich dachte es gäbe da vielleicht eine Funktion in PHP, die ich einfach übersehen habe.

      Also ich hab im Moment folgende funktionierende Variante, die mir aber irgendwie nicht gefällt. Weil es zwei Schritte sind und weil ich den Platzhalter durch einen anderen (regexp) ersetzen muss:

        
        
        
      $pattern = 'Peter %';  
      $sentence = 'Peter Schmidt';  
        
      $regexp = '/' . str_replace('%', '(.*)', $pattern) . '/';  
      preg_match($regexp,$sentence,$hits);  
        
      print $hits[1];  
        
        
      
      
      1. $pattern = 'Peter %';
        $sentence = 'Peter Schmidt';

        $regexp = '/' . str_replace('%', '(.*)', $pattern) . '/';
        preg_match($regexp,$sentence,$hits);

        Und es ist auch nicht exakt das was du willst:

        Denn dein Pattern ergibt dann 'Peter (.*)' und das matcht auf auf einiges mehr und hat zusätzlich einen Satz Klammern die nicht notwendig sind - der imho Sinnvollere Ausdruck sieht so aus '^Peter .*$' :)

        1. Mahlzeit suit,

          Und es ist auch nicht exakt das was du willst:

          Denn dein Pattern ergibt dann 'Peter (.*)' und das matcht auf auf einiges mehr

          Korrekt.

          und hat zusätzlich einen Satz Klammern die nicht notwendig sind

          Nicht korrekt. Der OP will das "Schmidt" rausbekommen ... insofern wären Klammern schon hilfreich, wenn er nicht noch nach der *Überprüfung* mit regulären Ausdrücken anschließend mit String-Funktionen alles auseinanderfummeln will, um ein Ergebnis zu *erhalten*.

          • der imho Sinnvollere Ausdruck sieht so aus '^Peter .*$' :)

          Ich wäre für '^Peter (.*)$' ...

          MfG,
          EKKi

          --
          sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
          1. Nicht korrekt. [...]

            Da hast du recht, das hab' ich überlesen und vorschnell das SQL-Verhalten reininterpretiert :)

            Ich wäre für '^Peter (.*)$' ...

            Da schließe ich mich an.

  2. ich hab einen Suchstring in der Form 'Peter %'

    und habe ein String 'Peter Schmidt';

    wie kann ich die beiden so vergleichen, dass ich das "Schmidt" rausbekomme? Muss ich da tatsächlich reguläre Ausdrücke bemühen?

    Kann es sein, daß das was mit Daten aus einer Datenbank zu tun hat und Du alle Datensätze aus einer Datenbank holst und dann mit php durchgehst?
    SELECT ... LIKE 'PETER %' würde bei 'Peter Schmidt' anschlagen (mysql).

    1. SELECT ... LIKE 'PETER %' würde bei 'Peter Schmidt' anschlagen (mysql).

      Nicht aber bei 'Horst Peter Schmidt' :)

      1. SELECT ... LIKE 'PETER %' würde bei 'Peter Schmidt' anschlagen (mysql).

        Nicht aber bei 'Horst Peter Schmidt' :)

        Soll es ja auch nicht, vermute ich, wozu sonnst das ' %'.