Automatisches ersetzen von Acronym

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

  • Automatisches ersetzen von Acronym

    Hallo.

    Ich habe versucht, auf meiner Webseite eine kleine Lösung zu programmieren, bei der bestimmte Schlüsselwörter automatisch als Acronym ausgezeichnet werden. Der Code dafür sieht wie folgt aus:
    PHP-Code:
    <?php
    if(!strstr($url'index')) {
    $acronym file("glossar.txt");

        foreach(
    $acronym as $elem) {
            
    $erg explode("<\\>",$elem);
               
    $Content str_replace($erg[0], "<acronym title=\"$erg[1]\">$erg[0]</acronym></a>"$Content);
        }
    ?>
    Meine Datei glossar.txt hat das Format:

    HTML</>Hypertext Markup Language
    XHTML</>Extensible Hypertext Markup Language
    gif</>Graphics Interchange Format

    D.h. nach dem Trennzeichen kommt, wofür der Begriff steht.

    Das Problem ist, dass mit der einfachen for-each Schleife jetzt z.B. auch in der $Content-Variable z.B.

    <img src="lala.gif">
    ersetzt wird und das zerschießt mir dann natürlich alles.

    Gibt es eine Möglichkeit, damit das Skript erkennt, dass es, sollte es sich um HTML Code handeln, eben nichts ersetzt?

    Im Endeffekt muss ich nur nach den "Einelementigen" HTML Tags ausschau halten. Die Tags, die bei mir im Content vorkommen sind eigentlich nur der <code>-Tag, <p>, <br>, evtl. mal <font>, <b> und noch ein paar andere Textauszeichnugen.

    D.h. ich müsste eigentlich nur verhindern, dass das ganze in einem <img> Tag stattfindet...d.h. das Programm darf nichts ersetzten, was zwischen < > steht...

    Wie kann man das umsetzten?

    Grüße
    devmag
    Schaut euch das mal an:PHP und AJAX lernen, sowie mein Blog über die Reise auf dem Jakobsweg.

  • #2
    Re: Automatisches ersetzen von Acronym

    Original geschrieben von devmag
    Wie kann man das umsetzten?
    Mit Regulären Ausdrücken.
    [FONT="Helvetica"]twitter.com/unset[/FONT]

    Shitstorm Podcast – Wöchentliches Auskotzen

    Kommentar


    • #3
      Gibt es eine Möglichkeit, damit das Skript erkennt, dass es, sollte es sich um HTML Code handeln, eben nichts ersetzt?
      Reguläre Ausdrücke mit dem Parameter e und Lookbacks. Damit kriegst du den RegExp dazu nur dann loszulegen wenn der Treffer nicht zwischen < und > steht.
      Ich habe vor längerem für meine Suchfkt auf meiner Page das folgenden gemacht um Suchtreffer nur ausserhalb von spitzen Klammern zu matchen
      PHP-Code:
      $str preg_replace("/((<[^>]*)|\b".$suche."\b/ie",'"\\2"=="\\1" : "<span style=\"background-color:yellow\">\\0</span>"',$deinString); 
      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


      • #4
        Re: Automatisches ersetzen von Acronym

        http://www.strohhalm.org/forum/?acti...pic&topic=1836
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar

        Lädt...
        X