Teilstring ausschneiden und in neue Zeichenkettenvariable einfügen

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

  • Teilstring ausschneiden und in neue Zeichenkettenvariable einfügen

    Hallo alle zusammen,

    ich beschäftige mich seit einiger Zeit etwas intensiver mit PHP, was auch zu meiner Freunde recht gut geklappt hat. Allerdings habe ich momentan wohl ein RIIIEESSSENNN Brett vorm Kopf und würde mich freuen wenn mir jemand sagen könnte wie ich es wieder abnehmen kann.

    Ich habe folgendes Problem:

    Ich habe eine Seite mit zwei Formularfeldern. In das erste (in diesem Beispiel A genannt) wird ein Text eingegeben (A1). Im zweiten Textfeld (hier B genannt) wird ebenfalls ein Text (B1) eingegeben. Nach drücken des Submit Buttons werden die Daten per POST an das Script zurück gegeben.

    Anmerkung zur Funktion:

    Praktisch soll der Text A1 durchsucht werden ob in im der Text aus B1 vorkommt.

    Bis dato ist ja alles noch kein Problem, die Daten werden als String in zwei Variablen geschrieben und nun könnte ich damit arbeiten.

    Nun habe ich bei PHP.NET ein wenig nach Stringverarbeitung gesucht und bin auf folgende Funktionen gestoßen:

    str_replace()
    ereg_replace()
    preg_replace()

    Schön dachte ich mir, damit müsste es doch eigentlich klappen.

    Haben also in etwa folgendes versucht

    $A1 = str_replace( $B1, $B1, $C1); (das ganze dann entsprechend auch für die anderen Funktionen)

    Leider passierte daraufhin GAR NICHTS. Außer bei preg_replace, da bekam ich folgende Fehlermeldung mit der ich erstmal fachlich nichts anfangen kann.


    Warning: Delimiter must not be alphanumeric or backslash in F:\minixampp\htdocs\test.php on line 26
    Ich komme einfach nicht weiter und verstehe auch nicht ganz wo mein Problem liegt. Vieleicht kann mir hier jemand weiterhelfen. Wäre super nett. *sichschonmalnenstrickundnenbaumsucht*

  • #2
    Hi,

    du möchtest ja nicht ersetzen, sondenr suchen, von daher wäre

    preg_match die richtige Funktion für dich. Diese FUnktion arbeitet mit Regulären ausdrücken, lies dich mal kurz ein ins Thema (hier auf der Seite gibs Tutorien dazu afaik) oder such im Forum.

    mit str_replace ($b, $b, $1) würdest du nach $b suchen und dieses mit $b ersetzen, also z.B. hallo suchen und durch ahllo ersetzen, -> birngt also nix

    cya max


    An mich bitte keine unaufgeforderten E-Mails senden (ausser ihr seid bereit geld zu zahlen, dann gerne )

    Kommentar


    • #3
      Anmerkung: oder einfacher strpos benutzen, der liefert die Position des ersten Vorkommens


      strpos
      Ist einfacher anzuwenden und benötigt keine regulären Ausrücke


      In diesem fall auch einen Blick wert : strstr
      Zuletzt geändert von MaxP0W3R; 23.07.2004, 10:20.


      An mich bitte keine unaufgeforderten E-Mails senden (ausser ihr seid bereit geld zu zahlen, dann gerne )

      Kommentar


      • #4
        @MaxP0W3R über preg_match bin ich auch gestoßen, bin aber bis jetzt noch nicht wirklich durchgestiegen.

        strstr ist allerdings für mich recht uninteressant weil ich nicht den Reststring haben will sondern den GESUCHTEN String. Die Position nützt mir (zumindest meines erachtens) erstmal nichts.

        Ich versuche weiter bei preg_match durchzusteigen.

        Mein Problem bisher bei preg_match bzw. preg_match_all war einfach die Syntaxierung. Ich komme mit der Beschreibung der Funktion einfach nicht klar. Na ja mal sehen ob ich woanders noch was zu preg_match finde.

        Kommentar


        • #5
          Okay vergessen wir das, mir raucht der Schädel und ich verstehe die Welt nun endgültig nicht mehr. Irgendwie stehe ich vor dem Problem das ich nicht mehr weiß wie ich weiter vorgehen soll. Mein Ziel bisher was es das wenn in A1 der in B1 hinterlegte Text vorkommt der Teilstring ausgeschnitten wird (wie auch immer man das nun eben handhaben will/kann) und in eine neue Variable C1 geschrieben wird. Wie ich genau das realisieren soll weiß ich zur Zeit nicht mehr.

          Ich habe/hatte den Ansatz einfach nur zu prüfen ob der String vorhanden ist und bei einem TRUE den Wert von B1 nach C1 zu schreiben.

          Außerdem hatte ich den Ansatz zu suchen ob B1 in A1 vorkommt und dann AUS A1 HERAUS den B1 String AUSZUSCHNEIDEN und nach C1 zu schreiben.

          Allerdings bin ich mittlerweile so wuschig im Kopf das ich für keine von beiden einen Programmtechnischen Ansatz habe. Hat jemand eine Idee bzw einen Wink mit dem Eifelturm? Ich fürchte das ein Zaunpfahl wohl nicht mehr ausreicht.

          Sorry aber ich bin zur Zeit echt schwer von Begriff.

          Kommentar


          • #6
            Ich habe/hatte den Ansatz einfach nur zu prüfen ob der String vorhanden ist und bei einem TRUE den Wert von B1 nach C1 zu schreiben.
            Also diesen Ansatz habe ich nun gelöst. Vielen Dank nochmal an Maypower für die Idee mit strpos.

            Allerdings bleibt für mich immer noch die zweite Alternative ungelöst und das fuxt mich mometan extrem. Allerdings kapier ich immer noch nicht wie ich es anstellen soll.

            Aber mit brummt jetzt mittlerweile echt der Schädel. Ich lass das Problem für heute Problem sein und mach erstmal Wochenende.

            Kommentar


            • #7
              Hach ja, was ein Wochenende voller "Ruhe" so alles bewirken kann. Hab mich heut morgen nochmal dran gesetzt und es binnen 2 Minuten gelöst. strpos, substr und strlen sei Dank. Vielen Dank nochmal
              MaxP0W3R

              Kommentar


              • #8
                Der Hinweis auf den fehlerhaften "Delimeter" bei preg_replace besagt, daß die Trennsymbole für den regulären Ausdruck nicht gültig sind. Vermutlich hast Du Deine Variable $B1 unverändert als zu findenden Ausdruck verwendet.

                Reguläre Ausdrücke benötigen jedoch ein Anfangs- und ein Endzeichen, innerhalb dessen der reguläre Ausdruck steht. Dies hat sich historisch so aus den regulären Ausdrücken der Sprache Perl ergeben. Hierfür wurde oft das Zeichen "/" als Zeichen verwendet, allerdings lassen sich auch andere Zeichen dafür verwenden.

                So hätte also zB. preg_replace aussehen müssen:
                PHP-Code:
                preg_replace("/".$B1."/",$C1,D1); 
                Die Fehlermeldung bezog sich ausschliesslich darauf, daß eben diese Begrenzungszeichen fehlten, bzw. ungültig waren (keine Zahlen oder Buchstaben erlaubt).

                Da reguläre Ausdrücke eine Welt für sich sind (fast schon eine eigene Sprache) ist es nicht weiter schlimm, wenn man sich andersweitig behelfen kann. Im Großen und Ganzen sind diese Ausdrücke aber unheimlich praktisch, wenn man viel mit dem Parsen von Text zu tun hat und auf jeden Fall mal einen Blick wert.

                » Tutorial für reguläre Ausdrücke
                Zuletzt geändert von admin; 24.07.2012, 11:07.
                Happiness is an empty error log

                Kommentar

                Lädt...
                X