Phil Marx: Acronyme - Nur Wie?

Hi ihrs!
Ich möchte gerne Acronyme auf meiner Seite benutzen. Also, dass Fremdwörter kenntlich gemacht werden und eine entsprechende Erklärung im Title sowie in der Statusleiste zur Verfügung gestellt wird...

Das alles soll (selbstverständlich ;) ) dynamisch passieren, mit PHP... Nur leider fehlt mir der entsprecehdne RegExp... Ich bin schon so weit, dass mir Sachen ersetzt werden. Problem ist nur, dass in der Beschreibung selber wiederum Acronyme erstellt werden, was zu einem heillosen Chaos führt...

Beispiel: Acronym "Browser", Erklärung "Setzt HTML um".
Wird super ersetzt, nur das "HTML" in der Erklärung wird wiederum "acronymisiert"...

Helft mir bitte, ich weiß echt nicht mehr weiter :)
danke :)

  1. Hallo Phil,

    Du wirfst das durcheinander:
    Acronyme sind kein Fremdwoerter und wenn es ein Fremdwort fuer 'Fremdwort' gaebe, waere das wohl Xenonym. Acronyme hingegen sind Woerter wie zB. UNO fuer United Nations Organisation, also Kunstwoerter, die aus einem laengeren Ausdruck zusammengesetzt sind.

    Gleichgueltig, ob wir jetzt von der einen oder der anderen Sorte sprechen, was fuer ein RegExp (geht das eigentlich als Acronym durch?) soll da drauf passen? Auf alle Woerter, zumindest bei unserem Zeichensatz passt a-Z oder \w.

    RegExp helfen hier also ueberhaupt nicht weiter. Was du brauchst ist irgendeine Art von Vergleichstabelle, eine Art Vokalbelheft, zB. eine ini-Datei oder eine Datenbank

    Gruß,

    Dieter

    1. RegExp helfen hier also ueberhaupt nicht weiter. Was du brauchst ist irgendeine Art von Vergleichstabelle, eine Art Vokalbelheft, zB. eine ini-Datei oder eine Datenbank

      So etwas existiert, ich habe es als Selbstverständlichkeit vorausgesetzt.
      Ich lese die Datensätze aus und will nun ersetzen. Fragt sich nur: wie?

      1. Hallo Phil,

        Wenn ich Dich recht verstehe, soll der Hilfstext in der Statusleiste und im Title erscheinen. Soll das bei mouseover oder sowas passieren?

        Gruß,

        Dieter

      2. Hallo,

        So etwas existiert, ich habe es als Selbstverständlichkeit vorausgesetzt.
        Ich lese die Datensätze aus und will nun ersetzen. Fragt sich nur:

        zeig mal die Datensätze (auszugsweise!) und was du bisher versucht hast.

        wie?
        Gruß
        Alexander Brock

        --
        SelfCode: ie:{ fl:{ br:> va:) ls:# fo:) rl:( n4:( ss:| de:> js:( ch:| sh:( mo:) zu:}
        http://againsttcpa.com
        1. Hi!
          Gerne zeige ich dir den Auschnitt:

          -----

          for($i=0; $i<count($acronym); $i++) {
           $acronym[$i]=preg_quote($acronym[$i], "/");
           $text=preg_replace('#\b('.$acronym[$i].')\b#', "<acronym title="$meaning[$i]">$acronym[$i]</acronym>", $text);
          }

          -----

          Wobei $acronym ein Array ist mit den einzelnen Fremdwörtern, $meaning ein Array mit den entsprechenden Erklärungen.
          Ergibt manchmal sowas:

          -----

          <acronym title="Abkürzung für Cascading Stylesheets. Mit ihnen ist es möglich, Internetseiten einfacher und vor allem vielfältiger zu <acronym title="Unter formatieren versteht man die optische Anpassung eines Textes">formatieren</acronym>. Ein immer mehr benutztes CSS-Script ist das zum Einfärben der Scrollbars (Laufleisten).">CSS</acronym>

          -----

          Über Sinn und Unsinn der Erklärung und der Menge lässt sich streiten, steht aber nicht zur Debatte...

          Vielen Dank schon im Voraus :)

          1. Hallo Phil,

            for($i=0; $i<count($acronym); $i++) {
            $acronym[$i]=preg_quote($acronym[$i], "/");
            $text=preg_replace('#\b('.$acronym[$i].')\b#', "<acronym title="$meaning[$i]">$acronym[$i]</acronym>", $text);
            }

            nur zur Klarstellung:

            Willst Du mit Deinem Skript _einmalig_ eine Überarbeitung von vorhandenen Dateien vornehmen, oder willst Du etwa diese Überarbeitung dynamisch zur Laufzeit in die Seitenauslieferung integrieren?

            Ich hoffe ersteres, fürchte letzteres.

            Freundliche Grüsse,

            Vinzenz

            1. Hi!

              So fürchte dich...

              1. Hallo Phil,

                So fürchte dich...

                Es gruselt mich, während ich auf die Auslieferung der Seiten warte :-)
                Hast Du schon einmal daran gedacht, preg_replace() Arrays zu übergeben?
                Was machst Du mit einem Radarschirm (nur als Beispiel) oder einer CSS-Eigenschaft?

                Freundliche Grüsse,

                Vinzenz

                1. Hi!
                  Wie ich schon vorher erwähnt habe, SIND die Bezeichnungen sowie die Erklärungen in Arrays verpackt. Daran soll es also nicht sein...

                  Und das Laden der Seite geht dennoch recht fix, keine Angst :)

                  1. Hallo Phil,

                    Wie ich schon vorher erwähnt habe, SIND die Bezeichnungen sowie die Erklärungen in Arrays verpackt. Daran soll es also nicht sein...

                    Ist ja wunderbar! Aber davon spreche ich nicht.

                    Du läufst mit einer Schleife durch die Arrays.

                    Du könntest statt dessen einen einzigen Aufruf von preg_replace nehmen und als Arrays an preg_replace zum Suchen und Ersetzen übergeben. Schau doch bitte noch einmal ins Handbuch - preg_replace()

                    Ich zitiere daraus:
                    Außer Limit, kann jeder Parameter, der an preg_replace() übergeben wird, ein eindimensionales Array sein.

                    Und das Laden der Seite geht dennoch recht fix, keine Angst :)

                    Bei steigender Füllung Deiner Datenbank auch noch? *fg*

                    Freundliche Grüsse,

                    Vinzenz

                    1. Hi!
                      Ich bin mir durchaus bewusst über diese Methode, ich habe es aus Testzwecken mal so gemacht (ich hab da dann auch mal die Zeile echo'en lassen usw., darum halt)...

                      Ändert nichts an dem Problem...

                      1. Hallo Phil,

                        Ändert nichts an dem Problem...

                        Dann ändere doch das Problem :-)

                        Statt durch Deine Begriffe zu iterieren, durchlaufe die Worte im Text. Auf Deine RegExps und preg_replace() kannst Du dann verzichten. Ein einfaches in_array() sollte es tun.

                        Alternativ: Schließe bei Deinen regulären Ausdrücken alles aus, was innerhalb von
                            <acronym
                        und
                            </acronym>
                        vorkommt. Ich weiß nicht, ob das geht. Dazu sind meine RegExp-Kenntnisse leider zu gering :-(

                        Freundliche Grüsse,

                        Vinzenz

                        1. Hallo,

                          Alternativ: Schließe bei Deinen regulären Ausdrücken alles aus, was innerhalb von
                              <acronym
                          und
                              </acronym>
                          vorkommt. Ich weiß nicht, ob das geht. Dazu sind meine RegExp-Kenntnisse leider zu gering :-(

                          Alles einschließen kann man ohne Probleme (glaub ich):

                          /<acronym.*?(</acronym>)/

                          oder mach ich da irgendwas falsch?

                          Gruß
                          Alexander Brock

                          --
                          SelfCode: ie:{ fl:{ br:> va:) ls:# fo:) rl:( n4:( ss:| de:> js:( ch:| sh:( mo:) zu:}
                          http://againsttcpa.com
        2. Huch, du wolltest du Datensätze...

          Aufgebaut sind sie so:

          URL -> engl. für Uniform Resource Locator. Eine URL bezeichnet die Adresse unter der eine Seite zu erreichen ist.
          Frame -> ist eine Unterteilung einer Seite in mehrere Bereiche, die unabhängig voneinander Inhalte anzeigen können.

          usw.

          Verpackt in einer MySQL-Tabelle.

    2. Hallo,

      RegExp (geht das eigentlich als Acronym durch?)

      Ja. Akronyme sind Abkürzungen, die wie ein Wort gesprochen werden, z. B. UNO, NASA etc.

      Dem gegenüber stehen z. B. die GmbH und das UNHCR, die beide beim Sprechen in Einzelbuchstaben zerlegt werden.

      Gruß aus Bonn
      Sven

      --
      Do it yourSELF 'cause SELFmade is bestmade.
      Selfcode: ie:% fl:( br:^ va:} ls:[ fo:) rl:( n4:{ ss:| de:> js:| ch:? mo:} zu:)
      Selfcode dekodieren - Selfcode-Info
  2. Hallo Phil,

    Ich möchte gerne Acronyme auf meiner Seite benutzen. Also, dass Fremdwörter kenntlich gemacht werden und eine entsprechende Erklärung im Title sowie in der Statusleiste zur Verfügung gestellt wird...

    Ausnahmsweise mal ein eher sinnvoller Missbrauch der Statusleiste. Mein Browser wird Deine Angaben dort dennoch nicht anzeigen :-(

    Wenn Du echte Akronyme erklären willst, dann nutze bitte <acronym>. Was spricht dagegen, die Erklärung nur mittels title-Attribut anzuzeigen?

    Für Fremdwörter könntest Du <span class="xenonym"> verwenden, siehe Dieters Posting.

    Das alles soll (selbstverständlich ;) ) dynamisch passieren, mit PHP... Nur leider fehlt mir der entsprecehdne RegExp... Ich bin schon so weit, dass mir Sachen ersetzt werden. Problem ist nur, dass in der Beschreibung selber wiederum Acronyme erstellt werden, was zu einem heillosen Chaos führt...

    Du darfst nicht rekursiv nachschlagen, das ist alles.

    Freundliche Grüsse,

    Vinzenz