[REGEX] Fragezeichen (?) stört preg_replace

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

  • [REGEX] Fragezeichen (?) stört preg_replace

    Hallo,

    ich möchte mit
    PHP-Code:
    $block=preg_replace("/{id}/",$a,$block); 
    folgende Zeile ersetzen:
    PHP-Code:
    <td><a href="#?id={id}">nur ein Klick zum Link ...</a></td
    Das klappt allerdings nur ohne das Fragezeichen im href

    Wie müsste ich den pattern für preg_replace ändern, damit die Ersetzung vorgenommen wird? Habe natürlich schon die Suchen bemüht, aber nach '?' kann ich ja nicht suchen (< 3Zeichen ...).

    Bin für jeden Hinweis dankbar ...

  • #2
    \?
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      RTFM
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        @Abraxax: Danke! Aber wohin damit ... ich habe schon gelesen, dass div. Zeichen maskiert werden können bzw. müssen. Allerdings komme ich damit auch nicht weiter. Denn
        PHP-Code:
        $block=preg_replace("/{id}\?/",$a,$block); 
        bzw.
        PHP-Code:
         <td><a href="#\?id={id}">nur ein Klick zum Link ...</a></td
        bringt mich nicht weiter - bin nicht lachen oder fluchen - es handelt sich um meine zweite Begegnung mit RegEx ...

        Kommentar


        • #5
          @wahsaga: Danke, dein Beitrag hat sich mit meiner Antwort auf Abraxax's Tipp überschnitten. Das habe ich gelesen - aber ich will das ? ja nicht finden oder ersetzen, sondern nur {id}. Ich würde ein ? maskieren wenn ich {id?}ersetzen möchte (also {id\?}) - oder bin ich hier völlig falsch ?!

          Kommentar


          • #6
            Re: [REGEX] Fragezeichen (?) stört preg_replace

            das fragezeichen dürfte m.E. gar nicht das problem sein, sondern die geschweiften klammern.

            diese haben in RegEx auch eine sonderbedeutung, nämlich den zahlenmässigen quantifier, {1,2} = suche mir stellen, an denen das voranstehende muster genau 1 oder 2 mal auftritt.

            da du das hier aber nicht haben willst, müssten also vor allem erst mal die geschweiften klammern maskiert werden:

            /\{id\}/
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              @wahsaga: Danke, habe ich probiert - gleiches Ergebnis: es wird keine Ersatzung vorgenommen. Lasse ich aber alles genauso wie es ist und entferne nur das ? wird die Ersetzung - trotz nicht maskierter geschweifter Klammer - durchgeführt. Jetzt bin ich doch etwas ratlos ...

              Hat vielleicht noch jemand einen Tipp für mich?

              Kommentar


              • #8
                Guten Morgen allerseits,

                neuer Tag - neues Glück ... ?! Kann das vielleicht noch mal jemand auf seiner Maschine testen ?! Vielleicht liegt es ja auch an meiner Konfiguration? Ich verwende PHP5.0.0 auf Suse8.2.

                Vielen Dank an jeden der die Ergebnisse seiner Mühen postet!

                Kommentar


                • #9
                  ich habe einfach nur die geschweiften klammern im suchmuster maskiert, und dann funktioniert folgendes bei mir ohne probleme:

                  http://wazgnuks.net/misc/Patrick_PQ.php
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #10
                    du hast directory listing im ordner misc an, wahsaga

                    weiss nicht ob es absicht ist


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

                    Kommentar


                    • #11
                      Original geschrieben von MaxP0W3R
                      du hast directory listing im ordner misc an, wahsaga

                      weiss nicht ob es absicht ist
                      nee, aber eigentlich ist's wurscht, weil ich /misc/ eh nur für beispiele etc. nutze, und darauf achte, da nichts "gefährliches" reinzulegen.

                      ausserdem bin ich ja selber so einer, der bei irgendwelchen links immer gerne mal stöbert, was er im verzeichnis noch so findet :-)


                      aber hab's jetzt mal abgestellt.
                      I don't believe in rebirth. Actually, I never did in my whole lives.

                      Kommentar


                      • #12
                        Danke wahsaga! Kannst du mir noch sagen welche PHP-Version du benutzt hast - bei mir geht es nämlich trozdem nicht - die geschweiften Klammern hatte ich ja gestern bereits maskiert ...

                        Danke!

                        Kommentar


                        • #13
                          4.3.6
                          I don't believe in rebirth. Actually, I never did in my whole lives.

                          Kommentar


                          • #14
                            Danke! Werde mir dann mal einen weiteren Apache mit PHP4.3.6 zulegen. Der Umstieg nach PHP5 hat es doch in sich ...

                            Kommentar

                            Lädt...
                            X