Ankündigung

Einklappen
Keine Ankündigung bisher.

Position eines Strings rausfinden, der mehrmals vorkommt

Einklappen

Neue Werbung 2019

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

  • Position eines Strings rausfinden, der mehrmals vorkommt

    Hi,

    ich habe einen String, in dem jetzt zum beispiel (ist wirklich nur nen beispiel kann auch zeichenketten sein, ist für eine Suche gedacht) jedes "w" durch ein "w" ersetzt werden soll, egal ob groß oder klein schreibung.

    ok, das ersetzen ist kein problem, da das Suchen nicht case-sensitive sein soll, habe ich das einfach mit eregi_replace gemacht. So, da ich aber auch wenn die Suche nicht case-sensitive sein soll, den zu ersetzenden buchstaben, aber trotzdem groß geschrieben haben möchte wenn er es im text ist, habe ich einfach folgendermaßen den Buchstaben aus dem STring geholt:

    PHP-Code:
    version eregi_replace($Begriff"[b]".substr($String,strpos($String,$Begriff),strlen($Begriff))."[/b]",$String);

    //$String ist der String in dem ersetzt werden soll
    //$Begriff ist das, was ersetzt werden soll 
    dies klappt auch, allredings nur für das erstemal, dannach schreibt er immer so, wie es beim erstenmal war.

    Also habe ich in der Dokumentation geguckt, wie es genau mit strpos aussieht, ob ich damit nicht auch die position des zweitenmals etc. bestimmen kann. das einzige was ich gefunden habe ist, dass ich noch das letzte Vorkommen mithilfe von strrpos, wobei ich dieser funktion auch nur einen Wert übergeben kann.

    Nun meine Frage, wie kann ich jetzt auch die Position des zweiten oder dritten mals feststellen, wo der gesuchte string vorkommt und wie kann ich das oben passend einbringen?

    Falls es hierzu doch eine Funktion in der Dokumentation gibt, bitte ich vielmals um entschuldigung und doch bitte den Namen oder den Link zu der entsprechenden Funktion

    Grüße

    ScherzkeCKs

  • #2
    Typischer Fall von "warum einfach wenns auch kompliziert geht"

    Mit preg_replace() kannst du sog. backreferences verwenden. Schau dir dazu am besten mal die Beispiele im Manual an - da sparst du dir den ganzen Kram mit strpos...

    Kommentar


    • #3
      so,

      ich sitz da jetzt schon fast 2 STunden dran und bin mittlerweile komplett verzweifelt.

      ich verstehe das nicht so genau mit dem \\n bzw. den $n bei der Rückreferenzierung.

      Folgendes steht als Beispiel in der Dokumentation:
      PHP-Code:
      <?php $zeichenkette '15. April 2003';$suchmuster '/(\d+)\. (\w+) (\d+)/i';$ersetzung '${2}1,$3';echo preg_replace($suchmuster$ersetzung$zeichenkette);?>
      hierbei verstehe ich aber schon das Suchmuster nicht, bei diesem ersetzen ${2}1,$3 blick ich aber gar nicht durch.

      nun gut, also habe ich einfach mal nen bisschen rumprobiert und mehr oder weniger wahllos, weil ich selbst beim 7ten mal durchlesen nicht wirklich verstanden habe, wie ich das genau verwenden soll, einfach mal folgendes, aber auch schon viele andere Versionen davon ausprobiert:
      PHP-Code:
      <?php

      $name 
      preg_replace($Begriff"[b]".'$1'."[b]",$String);

      ?>
      klappt aber überhaupt nicht,

      könnt ihr mir sagen, wie ich diese Rückreferenzierung zu verwenden hab?

      Kommentar


      • #4
        sry für doppelpost.

        habe mittlerweile rausgefunden wie es geht, nun habe ich aber noch das problem, das preg_replace case-sensitive ist, und das will ich ja eben nicht, heißt es soll sowohl groß als auch kleinschreibung suchen

        Kommentar


        • #5
          Dafür gibt es den Modifier i.
          Einfach ganz hinten an dein Suchmuster anhängen

          Kommentar


          • #6
            Vielen dank!

            das ging leichter als ich dachte.

            Kommentar

            Lädt...
            X