kostenloser Webspace werbefrei: lima-city


PHP | Reguläre Ausdrücke - Suchen und Ersetzen

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    x**********x

    Hey Leute,

    schlage mich grade mit den \"Regulären Ausdrücken\" rum und bin etwas am verzweifeln.
    Ich bin noch nicht sonderlich fit im Umgang mit den ganzen [/=\"!§!\"? :biggrin:

    Ich bin nichtmals sicher, ob es überhaupt möglich ist deswegen frage ich lieber
    bevor ich mir noch weitere Stunden um die Ohren hau ^^
    Folgendes:

    Ich brauche ein Suchmuster zum Ersetzen das
    aus in einer Zeichenkette Teile findet die zwischen \"<code></code>\" geschrieben sind ... und dazwischen sollen alle \"<\" und \">\" durch \"&lt;\" und \"&gt;\" ersetzt werden.

    Beispiel:
    Von
    \"<code> <b>Text</b> </code>\"
    
    Zu:
    \"<code> &lt;b&gt; Text &lt;/b&gt; </code>\"


    Ich hab jetzt zwar ein Suchmuster zusammen was im Prinzip so funktioniert aber nur für eins der beiden Symbole. Außerdem kommt noch dazu, dass < oder > nur einmal ersetzt wird.

    Ich denke ich zeige euch einfach mal mein zusammengebasteltes Muster ^^ und hoffe darauf dass einer es durchblickt und weiß wie ich das hinbekomme was ich erreichen will.

    preg_replace(\"!<code>(.*) < (.*)</code>!\",\"<code>$1 &gt $2</code>\",$str);



    Gruß

  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Also wenn ich dich richtig verstanden hab, sollen alle < und > zu & lt; und & gt; werden, aber nur zwischen <code> und </code>. Alles andere soll unverändert bleiben? Ich würde dafür preg_replace_callback() verwenden. Hier mal ein Beispiel, wie ich mir das vorstellen könnte:
    <?
    $str=preg_replace_callback(\'!<code>(.*)</code>!Ui\',\'replace_function\',$str);
    
    function replace_funktion($match)
    {
     $match[1]=str_replace(\'<\',\'& lt;\',$match[1]);
     $match[1]=str_replace(\'>\',\'& gt;\',$match[1]);
    
     return $match[1];
    }
    ?>

    Ich hab bei & lt; ein Leerzeichen eingefügt, damit man sieht was du meinst.
  4. Autor dieses Themas

    x**********x

    Hey,
    das ging ja fix ^^
    Danke schön .. ich werd mir das jetzt mal genauer anschauen, weil auf den ersten Blick versteh ichs noch nicht so ganz ^^ :biggrin: und mal testen.
    Vom Sinn her hast dus auf jeden Fall voll erfasst.

    Danke dir ... ^^
    Gruß


    EDIT:

    Soo also funktioniert einwandfrei ... funktion muss allerdings in function geändert werden ;)
    Vielen Dank =)
    Ich hab allerdings noch eine Frage... und zwar was bewirkt das \"U\" hinterm Muster ... auf der Seite wo ich mir das Zeug zusammengelesen habe gabs nur \"i,s,m\"

    Gruß

    Beitrag geändert: 15.4.2008 19:40:10 von xsnifferdogx


    Beitrag geändert: 15.4.2008 19:52:23 von xsnifferdogx
  5. Ich weiß jetzt nicht :)
    Man kann doch \'<\', \'>\', \'\'\', \'\"\' mit Hilfe von htmlspecialchars() ersetzen ...
  6. Autor dieses Themas

    x**********x

    nikic schrieb:
    Ich weiß jetzt nicht :)
    Man kann doch \\\'<\\\', \\\'>\\\', \\\'\\\'\\\', \\\'\\\'\\\' mit Hilfe von htmlspecialchars() ersetzen ...


    Mhh ja das schon, aber dann ersetzt man ja alle Zeichen im String.
    Bei mir ists aber wichtig dass alles außerhalb von <code> </code> normal wie HTML behandelt wird ;)
    Ich will damit halt so änlich wie hier mit dem BB Code - HTML - Code darstellen können.

    Gruß

  7. funktion muss allerdings in function geändert werden ;)

    Upps, stimmt natürlich.

    Ich hab allerdings noch eine Frage... und zwar was bewirkt das \"U\" hinterm Muster ... auf der Seite wo ich mir das Zeug zusammengelesen habe gabs nur \"i,s,m\"

    http://de.php.net/manual/de/reference.pcre.pattern.modifiers.php
    Den Modifier s könnte man sicher auch noch verwenden, musst du einfach mal ausprobieren was besser für deine Bedürfnisse passt. Da mach ich eigentlich auch immer trial and error. Das U bewirkt, dass die Funktion nicht nach dem ersten gefundenen <code></code>-Gebilde aufhört (kurz gesagt). Mnachmal ist das auch gewünscht, aber meistens ist U ganz sinnvoll.
  8. Autor dieses Themas

    x**********x

    Ah .. perfekt ^^
    Danke ... ich wusste nicht dass die Dinger Modifikatoren heißen deswegen war meine Suche wohl erfolglos ^^

    Okay .. dann hat sich alles geklärt ..
    Vielen Dank nochmal
  9. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!