preg_replace

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

  • preg_replace

    Hallo Leute,

    habe schon alles ausprobiert, was mir einfällt, aber bekomme es nicht hin

    Und zwar möchte ich eine Variable mit Inhalt aus einer DB füllen und falls einer der Schriftzüge "DIN 13157", "DIN 13169", "DIN 13160", "DIN 13164" enthalten ist, diesen durch <a href="din.html" target="_blank">[SCHRIFTZUG]</a> ersetzen.

    Dies war mein letzter Ansatz:
    PHP-Code:
    $pattern = ('DIN 13157'|'DIN 13169'|'DIN 13160'|'DIN 13164');
    $text preg_replace($pattern,"<a href=\"din.html\" target=\"_blank\">$1</a>",nl2br($produkt[6])); 
    Ich glaube, ich mache etwas Grundlegendes falsch. Kann mir einer von Euch vllt. auf die Sprünge helfen?

    Vielen Dank.

    Grüße

  • #2
    PHP-Code:
    $produkt[6] = 'DIN 13169';
    $pattern = ("/^DIN [0-9]{5}/");
    $text preg_replace($pattern,"<a href=\"din.html\" target=\"_blank\">$produkt[6])</a>",$produkt[6]);
    echo 
    $text
    so was?

    gruß
    peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      Hi,

      na das funktioniert prinzipiell ja schon perfekt!

      Nur enthält diese $produkt[6] leider eine lange Zeichenkette, die das Suchmuster evtl. erhält. D.h. ich möchte nicht die komplette $produkt[6] als Linknamen haben, sondern lediglich den "DIN ..."-String.

      Habe ich das einigermaßen verständlich erklären können?

      Vielen, allerbesten Dank Dir!

      Grüße

      Kommentar


      • #4
        Und zwar möchte ich eine Variable mit Inhalt aus einer DB füllen ...
        warum ist die db tabelle nicht normalisiert?

        Kommentar


        • #5
          Hi,

          ich denke ich habe mich wohl zu umständlich ausgedrückt.

          $produkt[6] könnte folgenden Inhalt haben:
          $produkt[6] = "Dies ist die tolle Beschreibung, die nebenbei auch noch DIN 13179 enthält!";

          Nun soll abschließend dies ausgegeben werden:
          "Dies ist die tolle Beschreibung, die nebenbei auch noch <a href="http://www.xyz.de/din.html" target="_blank">DIN 13179</a> enthält."

          Habe bereits einen fertigen Codeschnipsel gefunden, der in einer beliebigen Zeichenkette URLs in HTML-Links umwandelt, nur habe ich mit "DIN 13179" eben keine URL (mit Anfang http:// oder so), sondern eben lediglich diesen Schriftzug.

          Vielen, allerbesten Dank Euch!

          Grüße

          Kommentar


          • #6
            PHP-Code:
            $str 'ich bin dein text mit DIN30453 und DIN64294 Normen. Die sind wichtig';
            $pattern "/(DIN\\d{5})/";
            $replace '<a href="index.html">\\1</a>';
            $result preg_replace($pattern$replace$str);
            /*ergibt
            ich bin dein text mit <a href="index.html">DIN30453</a> und <a href="index.html">DIN64294</a> Normen. Die sind wichtig
            */ 
            RegExp in Aktion

            Gruss

            tobi
            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

            Kommentar


            • #7
              Hi tobi,

              PERFEKT!

              PHP-Code:
              $pattern "/(DIN \d{5})/";
              $text preg_replace($pattern,"<a href=\"din.html\" target=\"_blank\">$1</a>",nl2br($produkt[6])); 
              So funktioniert's nun bei mir. $1 habe ich nun anstatt \1, da \1 bei mir (evtl. wg. PHP5???) nicht geklappt hat.

              Vieeelen Dank Dir!

              Kommentar


              • #8
                Wenn müsste man 2 mal \\ benutzen
                also entweder \\1 oder halt wie du es schon benutzt hast $1

                MFG
                Lars

                Kommentar

                Lädt...
                X