Ankündigung

Einklappen
Keine Ankündigung bisher.

preg_replace: spontane fehlermeldungen

Einklappen

Neue Werbung 2019

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

  • preg_replace: spontane fehlermeldungen

    hallo zusammen,
    ich sitze hier vor einer ominösen sache.
    kurz worum es geht:
    - ich lade datensätze bestehend aus html-code aus einer db
    - diese ds filtere ich mittels preg_replace und ergänze
    bei bestimmten wörtern einen link-tag:
    Code:
    preg_replace('/((<[^>]*)|'.$word.')/e', '"\2"=="\1"? "\1":"$link"', (string)$body_tags[$i]['tx_pagephpcontent_php_code']);
    $word = zu suchendes wort
    $link = halt das wort umgeben von <a>-tags
    $body_tags[$i]['tx_pagephpcontent_php_code'] = htmlbody

    mein link-string sieht z.b. so aus:
    Code:
    <?php echo getToolTip(\"Lingua\",$_REQUEST[\'L\']); ?>
    - nach ein paar durchgängen kommt komischerweise folgende meldung:
    Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in ..\class\Glossar.class.php(21 : regexp code on line 1

    Fatal error: preg_replace() [function.preg-replace]: Failed evaluating code: "<?php echo getToolTip(\"Lingua\",$_REQUEST[\'L\']); ?"=="<?php echo getToolTip(\"Lingua\",$_REQUEST[\'L\']); ?"? "<?php echo getToolTip(\"Lingua\",$_REQUEST[\'L\']); ?":"$link" in ..\class\Glossar.class.php on line 218
    das problem liegt nicht an dem wort.
    egal, welches wort ich erst durchlaufen lasse,
    nach ca. 10 - 35 durchgängen bricht er mit obiger fehlermeldung ab.
    wie gesagt, unabhängig vom link, wort oder body.


    hat jmd evtl vorschläge ?

    vielen dank und grüße
    tim

  • #2
    hat jmd evtl vorschläge ?
    Falsch kopiert

    Kommentar


    • #3
      warum -> $_REQUEST[\'L\'] ?!

      kann man nicht einfach $_REQUEST['L'] machen ?

      Kommentar


      • #4
        nein, an dem /' liegts net...

        CIXX, wie meinen ?

        Kommentar


        • #5
          CIXX, wie meinen ?
          Naja mir kommt der Quellcode bekannt vor, hab jetzt allerdings nicht selber getestet.

          Kommentar


          • #6
            achso...
            ja, er ist aus der php-faq. ich hab nur " gegen ' getauscht.

            aber hatte so ein problem noch niemand?

            explizites parsen in strings klappt auch nicht.

            Kommentar


            • #7
              Sorry aber wozu ein <?php echo funktion(); ?>
              Das verstehe ich nicht.
              Die Parameter der Funktion scheinen ja gleich zu bleiben, nimm lieber den Rückgabewert, speicher ihn in eine Variable und setz ihn direkt ein.

              Kommentar


              • #8
                hallo zergling,
                das mit der funktion muss leider so sein, denn
                es ist ein glossar und nem tooltip dazu.

                änderungen am glossar müssen dann nicht zwangsläufig auch überall
                im body stehen.

                es sind ca. 400 seiten in einer db gepeichert,
                per funktion ist das alles sehr sauber so.

                Kommentar


                • #9
                  ok,
                  also manchmal scheint der die callback-angabe
                  als php-code zu interpretieren und jammert.

                  siehe $link-variable;

                  wie kann ich nun preg_replace sagen, dass es sich um einen gewöhnlichen string handelt?

                  danke,
                  viele grüße
                  tim

                  Kommentar


                  • #10
                    http://www.php.net/preg_quote

                    Kommentar


                    • #11
                      danke axo.

                      wenn ich nun meinen replace-string ($link)
                      mit
                      PHP-Code:
                      $link preg_quote($link); 
                      gegenüber preg_replace sicher mache,
                      dann hab ich das problem, dass er die mit '\' maskierten
                      regex-ausdrücke auch beim ersetzen in meinen $text übernimmt:
                      \<\?php echo getToolTip\("europa",\$_REQUEST\['L'\]\); \?\>
                      das soll natürlich in keinem html-body stehen.

                      was mache ich falsch?

                      grüße
                      tim

                      Kommentar


                      • #12
                        wenn du ein bisschen mehr nachdenkst, kommst du drauf.

                        Kommentar


                        • #13
                          äh, keine ahnung.
                          delimeter, die ich im parameter angeben könnte,
                          hab ich in der $link - variable nicht.

                          warum dieses hinhalten?

                          Kommentar


                          • #14
                            magst es mir net sagen?

                            Kommentar

                            Lädt...
                            X