Taschmahal: Sonderzeichen via CSS automatisch anderer Farbe zuweisen

Hi. Die überschrift sagt eigentlich alles. Ich habe vor, via CSS Sonderzeichen automatisch einer anderen Farbe zuzuweisen. Also Standardfarbe ist Schwarz, und die Sonderzeichen <>|,.-;:_µ#'+*~´ß0987654321^°!"§$%&/()=?`²³{[]}@ sollen grün sein.

Weiß einer von euch wie das geht? Bin nämlich ziemlich ratlos.

  1. Salvete,

    Weiß einer von euch wie das geht? Bin nämlich ziemlich ratlos.

    afaik geht das nicht. Hast du eine serverseitige Technik zu Verfuegung?
    Dann koenntest du den anzuzeigenden Text parsen lassen und den entsprechenden
    Zeichen eine CSS-Klasse zuweisen.

    MfG,
    Sympatisant

    --
    "Non dura iubeantur, non prohibeantur inpura."
    1. Hi,

      es geht nicht. Du kannst nur Tags und deren _komplette_ Inhalte formatieren, nicht aber Teilmengen davon. Eine Möglichkeit besteht darin, dies serverseitig zu machen, wie Sympatisant vorschlägt. Andererseits kann man dazu auch JavaScript nutzen (das jedoch nicht zwingend aktiviert sein muss).

      Gruß, LX

      --
      X-Self-Code: sh:( fo:) ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
      X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
      X-Will-Answer-Email: Unusual
      X-Please-Search-Archive-First: Absolutely Yes
      1. Danke für euren schnellen Antworten!
        Also da ich nur Webspace habe, und so keinen vollen Serverzugriff habe, werde ich es wohl mit Javascript machen müssen. Wisst ihr, wie der genaue Code ist und wo ich ihn einsetzten muss (Css oder index.php ...)?

        1. Also da ich nur Webspace habe, und so keinen vollen Serverzugriff habe, werde ich es wohl mit Javascript machen müssen. Wisst ihr, wie der genaue Code ist und wo ich ihn einsetzten muss (Css oder index.php ...)?

          "Halt! Bevor wir loslegen ... ein kleines Geschichts-Quiz"

          hast du nun die möglichkeit, eine serverseitige scriptsprache zu nutzen (php zb) oder nicht?

          und was willst du überhaupt machen? sonderzeichen markieren? warum? syntaxhervorhebung oder aus spass an der freude? oder um einen gewissen logischen nutzen zu erzielen?

          1. Also da ich nur Webspace habe, und so keinen vollen Serverzugriff habe, werde ich es wohl mit Javascript machen müssen. Wisst ihr, wie der genaue Code ist und wo ich ihn einsetzten muss (Css oder index.php ...)?

            "Halt! Bevor wir loslegen ... ein kleines Geschichts-Quiz"

            hast du nun die möglichkeit, eine serverseitige scriptsprache zu nutzen (php zb) oder nicht?

            und was willst du überhaupt machen? sonderzeichen markieren? warum? syntaxhervorhebung oder aus spass an der freude? oder um einen gewissen logischen nutzen zu erzielen?

            Also ich kann php, html, javascript und eigentlich alle gängigen Sprachen nehmen. Ich dachte bei den Serverseitigen Sprachen eher an MySQL oder sowas, aber ihr seht, ich kenne mich nicht aus.

            Die Sonderzeichen will ich eigentlich nur aus Designgründen färben, mehr nicht. Ich mein, ihr werdet mich vllt für blöd erklären, aber wenn man sich einmal in ein Design vertieft hat, will man nicht mehr davon abrücken ;)

            1. Salvete,

              Also ich kann php, html, javascript und eigentlich alle gängigen Sprachen

              Na, das ist schonmal eine gute Voraussetzung ;)

              Dann liegt dir der Text also als String vor.
              Somit kannst Du mit diversen Replace-Methoden dein gewuenschtes Ergebnis
              erzielen. zB http://de3.php.net/manual/de/function.preg-replace.php
              Du suchst mit regulaeren Ausdruecken nach Sonderzeichen, und ersetzt diese
              bzw. fuegst diesen das entsprechende CSS-Style hinzu (siehe Posting weiter
              oben).

              MfG,
              Sympatisant

              --
              "Non dura iubeantur, non prohibeantur inpura."
              1. Ok, ich habe das jetzt für den Content definiert. Ich habe noch nicht gesagt wie das CSS es umsetzten soll, und trotzdem zerschießt es meine Seite. siehe http://k10243-01.s02.xyon-hosting.de/taschmahal/taschmahal/

                (Ich nutze Wordpress) post-template.php

                function the_content($more_link_text = '(more...)', $stripteaser = 0, $more_file = '') {
                 $content = get_the_content($more_link_text, $stripteaser, $more_file);
                 $content = apply_filters('the_content', $content);
                 $content = str_replace(']]>', ']]&gt;', $content);
                 $content = preg_replace('/(<|>|||,|.|-|;|:|_|µ|#|'|+|\*|~|´|`|ß|0|9|8|7|6|5|4|3|2|1|^|°|©|!|"|§|$|%|&|/|(|)|=|?|²|³|{|}||[|]|\\|@)/', '<span class="sonderzeichen">$1</span>',$content);
                 echo $content;
                }

                Nur ist eben das Problem jetzt, dass es meinen Blog zerschießt. Ich weiß nicht warum, aber Bilder usw werden als Code angezeigt. Kennt jemand die Lösung bzw. den Fehler?

                MFG

                Taschmahal

                1. Nur ist eben das Problem jetzt, dass es meinen Blog zerschießt. Ich weiß nicht warum, aber Bilder usw werden als Code angezeigt. Kennt jemand die Lösung bzw. den Fehler?

                  "eh klar", wirf einen blick in den quelltext - du wirst schnell feststellen, warum das so ist - du ersetzt schließlich eine ganze reihe zeichen (egal wo) durch dein <span class="sonderzeichen">-zeug

                  1. "eh klar", wirf einen blick in den quelltext - du wirst schnell feststellen, warum das so ist - du ersetzt schließlich eine ganze reihe zeichen (egal wo) durch dein <span class="sonderzeichen">-zeug

                    Heißt das, dass ich gewisse Zeichen gar nicht ersetzten kann?
                    Oder wie kann ich das sonst lösen?

                    1. Heißt das, dass ich gewisse Zeichen gar nicht ersetzten kann?

                      nein - du kannst jedes zeichen ersetzen, problemlos sogar - du musst dir nur im klaren sein, dass du die zeichen die zu deinem markup gehören, in frieden lassen musst

                      Oder wie kann ich das sonst lösen?

                      forme den regulären ausdruck so um, dass er sämtliches markup (also die tags sowie den inhalt der attribute) in frieden lässt

                      <a href="http://example.com/">mein link</a> wird momentan von dem regulären ausdruck zu dem hier umgeformt:

                      <span class="sonderzeichen"><</span>a href
                      <span class="sonderzeichen">=</span>
                      <span class="sonderzeichen">"</span>
                      <span class="sonderzeichen">http
                      <span class="sonderzeichen">:</span>
                      <span class="sonderzeichen">/</span>
                      <span class="sonderzeichen">/</span>example
                      <span class="sonderzeichen">.</span>com
                      <span class="sonderzeichen">/</span>
                      <span class="sonderzeichen">"</span>
                      <span class="sonderzeichen">></span>mein link
                      <span class="sonderzeichen"><</span>
                      <span class="sonderzeichen">/</span>a
                      <span class="sonderzeichen">></span>

                      und das solltest du verhindern

                      1. Ich hab jetzt 2 Stunden lang rumprobiert, aber irgendwie wills nicht. Ich komm einfach nicht auf die Lösung.

                        $content = preg_replace('/(||,|.|-|_|µ|#|'|+|\*|~|´|`|ß|^|°|©|!|§|$|%|&|/|(|)|=|?|²|³|{|}||[|]|\\|@)/', '<span class="sonderzeichen">$1</span>',$content);

                        Damit geht es auch nicht. Sorry das ich mich so dumm anstelle, aber ich weiß einfach nicht, wie es geht

                        1. Salvete,

                          bei den Regular Expressions gibt es auch die Moeglichkeit direkt alle
                          Sonderzeichen anzusprechen. Soll heissen, dass zum Beispiel (wenn ich
                          das noch richtig in Erinnerung habe) der Ausdruck "/w" alle Buchstaben
                          anspricht - _exklusive_ Sonderzeichen und numerische Werte. Diesen kannst
                          du dann negieren. Somit entfaellt die komplizierte (u. unmoegliche)
                          Auflistung aller Sonderzeichen.

                          MfG,
                          Sympatisant

                          --
                          "Non dura iubeantur, non prohibeantur inpura."
                          1. Danke. Nur hilft mir das nicht wirklich weiter, da ich mich mit RegEx nicht auskenne... Trotzdem Danke! Also das würde doch heißen, dass ich \w negieren müsste, was wiederrum ^\w bzw. \W geben müsste.

                            Aber wenn ich den Code in die entsprechende Zeile einfüge, kommt ein anderer Fehler. Vllt habe ich einen Fehler gemacht?

                            function the_content($more_link_text = '(more...)', $stripteaser = 0, $more_file = '') {
                             $content = get_the_content($more_link_text, $stripteaser, $more_file);
                             $content = apply_filters('the_content', $content);
                             $content = str_replace(']]>', ']]&gt;', $content);
                             $content = preg_replace('^\w', '<span class="sonderzeichen">$1</span>',$content);
                             echo $content;
                            }

                            Wäre nett, wenn jemand einfach den Fehler berichtigen könnte, dan ich sonst warscheinlich nicht auf die Lösung komme, und mir dann erklären würde, warum das so ist. Ich bin hier echt am verzweifeln :(, trotzdem Danke für deine Hilfe.

                            MFG

                            Taschmahal

                            1. Hi,

                              Danke. Nur hilft mir das nicht wirklich weiter, da ich mich mit RegEx nicht auskenne... Trotzdem Danke! Also das würde doch heißen, dass ich \w negieren müsste, was wiederrum ^\w bzw. \W geben müsste.

                              Wie kommst Du auf ^\w ?
                              Wenn das ^ nicht als erstes Zeichen einer Zeichenklasse auftritt, sondern außerhalb einer Zeichenklasse, hat es die Bedeutung "Stringanfang" (bzw. "Zeilenanfang", je nachdem, ob das m-Flag gesetzt ist).

                              [\W] ist dasselbe wie [^\w], aber \W ist nicht dasselbe wie ^\w.

                              cu,
                              Andreas

                              --
                              Warum nennt sich Andreas hier MudGuard?
                              O o ostern ...
                              Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
                              1. mhh ok. zur lösung bin jedoch immer noch nicht gekommen...

                                Ich glaube, hier will mir das keiner sagen :/, aber es wäre wirklich sehr sehr nett, wenn mir jemand die lösung für mein problem nennen könnte.

                                1. Hi. Danke für deine schnelle Antwort. Doch bei deiner Lösung kommt folgender Fehler:

                                  Parse error: syntax error, unexpected T_ECHO in /var/kunden/webs/K10243-01/taschmahal/taschmahal/wp-includes/post-template.php on line 58

                                  In entsprechender Zeile steht folgendes:

                                  $content = preg_replace('#([^\w\s]{1,})#is', '<span class="sonderzeichen">$1</span>',$content) //** Zeile 59**//
                                   echo $content; //** Zeile 58** //
                                  }

                                  @Kai: Das Problem ist, dass der Thread so weit unten ist, dass keiner mehr Antwortet. Falls ich eine Lösung bekomme, werde ich fürs Archiv den Lösungsweg nochmals detailliert erklären.

                                  1. Hi. Danke für deine schnelle Antwort. Doch bei deiner Lösung kommt folgender Fehler:

                                    Parse error: syntax error, unexpected T_ECHO in /var/kunden/webs/K10243-01/taschmahal/taschmahal/wp-includes/post-template.php on line 58

                                    Das gute alte Semikolon am Ende der Zeile fehlt :)

                                    Grüße aus dem Wald
                                    Voodoo

                                    1. Danke! jetzt würde es theoretisch gehen. Bilder und sonstige Dinge werden zwar noch nicht richtig angezeigt, aber wenn ich nun diese Zeichen durch die farbige Version ersetzte müsste es doch klappen oder? Einen Versuch wäre es zumindest wert.

                                      Was muss ich nun machen, damit die Zeichen, die ich ersetzt habe, durch die farbige Version ersetzt werden? muss ich da was ins style.css einsetzen oder so?

                                      1. Salvete,

                                        Was muss ich nun machen, damit die Zeichen, die ich ersetzt habe, durch
                                        die farbige Version ersetzt werden? muss ich da was ins style.css
                                        einsetzen oder so?

                                        Dazu hatte ich bereits weiter oben einen Vorschlag gemacht.
                                        Siehe https://forum.selfhtml.org/?t=173943&m=1142281

                                        Die zu ersetzenden Zeichen bekommen einfach eine eigene CSS-Klasse definiert.
                                        Das <span>-Attribut eigent sich hierzu am besten. Und die dort angegebene
                                        Klasse fuegst du dann in deine Stylesheet-Datei ein.

                                        MfG,
                                        Sympatisant

                                        --
                                        "Non dura iubeantur, non prohibeantur inpura."
                                        1. Guten Tag.

                                          Also ich bin nun endgültig verwirrt. Ich habe ja nun das übernommen:

                                          function the_content($more_link_text = '(more...)', $stripteaser = 0, $more_file = '') {
                                           $content = get_the_content($more_link_text, $stripteaser, $more_file);
                                           $content = apply_filters('the_content', $content);
                                           $content = str_replace(']]>', ']]&gt;', $content);
                                           $content = preg_replace('#([^\w\s]{1,})#is', '<span class="sonderzeichen">$1</span>',$content);
                                           echo $content;
                                          }

                                          nun wollte ich in der style.css eine neue classe machen. aber es ändert sich an der seite überhaupt nichts. weder werden die sonderzeichen farbig, noch werden die bilder wieder zu bildern bzw. die <> tags wieder zu dem, was sie eigentlich sind.

                                          Nun habe ich ja eine nicht statische Website bzw. Inhalt. Also muss ich die Replace-methode anwenden. Doch brauche ich dann überhaupt das css und den oben genannten code? und wo muss dieser javascript befehl hin? Und wie würde er lauten?

                                          Wie sie sehen, bin ich komplett verwirrt.

                                          1. Ok, die variante mit dem Ersetzten geht nicht, also muss ich es via JavaScript machen.

                                            Kann ich dort die gleichen Ausdrücke verwenden?

                                            1. Kann ich dort die gleichen Ausdrücke verwenden?

                                              ja, aber es wird keinen unterschied machen, da der selbe reguläre ausdruck das selbe bewirkt

                                              ggf siehst du dir das mal an: https://forum.selfhtml.org/?t=173943&m=1143722

                                              ums etwas klarer zu sagen "geht nicht" ist keine fehlerbeschreibung - es wird dir niemand helfen können, wenn du nicht irgendwo zumindest dein fehlerhaftes zwischenresultat erklärst oder herzeigst

                                  2. Hallo.

                                    @Kai:

                                    Du kannst ihm ruhig direkt antworten.

                                    Das Problem ist, dass der Thread so weit unten ist, dass keiner mehr Antwortet.

                                    Wenn nicht geantwortet wird, liegt das fast nie an der Position des Threads.
                                    MfG, at

        2. Salvete,

          Also da ich nur Webspace habe, und so keinen vollen Serverzugriff habe,
          werde ich es wohl mit Javascript machen müssen. Wisst ihr, wie der genaue
          Code ist und wo ich ihn einsetzten muss (Css oder index.php ...)?

          Also wenn du sowieso nur mit statischem HTML arbeitest(?), dann kannst du
          das ja direkt in das HTML selbst schreiben.

            
          "Hier ein Beispiel<span class="sonderzeichen">:</span>  
          Bla Blub<span class="sonderzeichen">!</span>  
          
          

          Ansonsten, im Falle nicht statischer Seiten, gibt es in JavaScript die
          Replace-Methode: http://de.selfhtml.org/javascript/objekte/string.htm#replace

          Aber wie suit bereits schrieb, ist mir auch noch nicht ersichtlich, worum
          es dir eigentlich geht.

          MfG,
          Sympatisant

          --
          "Non dura iubeantur, non prohibeantur inpura."
          1. Guten Tag.

            Also ich bin nun endgültig verwirrt. Ich habe ja nun das übernommen:

            function the_content($more_link_text = '(more...)', $stripteaser = 0, $more_file = '') {
             $content = get_the_content($more_link_text, $stripteaser, $more_file);
             $content = apply_filters('the_content', $content);
             $content = str_replace(']]>', ']]&gt;', $content);
             $content = preg_replace('#([^\w\s]{1,})#is', '<span class="sonderzeichen">$1</span>',$content);
             echo $content;
            }

            nun wollte ich in der style.css eine neue classe machen. aber es ändert sich an der seite überhaupt nichts. weder werden die sonderzeichen farbig, noch werden die bilder wieder zu bildern bzw. die <> tags wieder zu dem, was sie eigentlich sind.

            Nun habe ich ja eine nicht statische Website bzw. Inhalt. Also muss ich die Replace-methode anwenden. Doch brauche ich dann überhaupt das css und den oben genannten code? und wo muss dieser javascript befehl hin? Und wie würde er lauten?

            Wie sie sehen, bin ich komplett verwirrt.

      2. Hallo.

        Du kannst nur Tags und deren _komplette_ Inhalte formatieren, nicht aber Teilmengen davon.

        Das ist selbstverständlich falsch.
        MfG, at

        1. Hi,

          Du kannst nur Tags und deren _komplette_ Inhalte formatieren, nicht aber Teilmengen davon.
          Das ist selbstverständlich falsch.

          Und nicht nur wegen :first..., sondern auch wegen des Unterschieds zwischen Tags und Elements ;-)

          cu,
          Andreas

          --
          Warum nennt sich Andreas hier MudGuard?
          O o ostern ...
          Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
          1. Hallo.

            Du kannst nur Tags und deren _komplette_ Inhalte formatieren, nicht aber Teilmengen davon.
            Das ist selbstverständlich falsch.
            Und nicht nur wegen :first..., sondern auch wegen des Unterschieds zwischen Tags und Elements ;-)

            Das ist eben der Unterschied: Ich picke die Rosinen heraus, du kackst die Korinthen. -- Ja, ich weiß, dass wir uns damit abwechseln.
            MfG, at

  2. Hi. Danke für deine schnelle Antwort. Doch bei deiner Lösung kommt folgender Fehler:

    Parse error: syntax error, unexpected T_ECHO in /var/kunden/webs/K10243-01/taschmahal/taschmahal/wp-includes/post-template.php on line 58

    In entsprechender Zeile steht folgendes:

    $content = preg_replace('#([^\w\s]{1,})#is', '<span class="sonderzeichen">$1</span>',$content) //** Zeile 59**//
     echo $content; //** Zeile 58** //
    }

    @Kai: Das Problem ist, dass der Thread so weit unten ist, dass keiner mehr Antwortet. Falls ich eine Lösung bekomme, werde ich fürs Archiv den Lösungsweg nochmals detailliert erklären.

    1. @Kai: Das Problem ist, dass der Thread so weit unten ist, dass keiner mehr Antwortet. Falls ich eine Lösung bekomme, werde ich fürs Archiv den Lösungsweg nochmals detailliert erklären.

      es antwortet sehrwohl jemand auf threads die "weit unten" sind, ich zb bin der benutzung des scrollwheels mächtig

      ich schätze aber, dass es den potentiellen helfern einfach schwer fällt dir zu helfen, da du lösungsvorschläge gekonnt ignorierst und einfach sagst "es geht" nicht und kein online-beispiel bringst, welches den fertig ausgegebenen code liefert

      in diesem beitrag habe ich dich darauf hingewiesen, dass auch sonderzeichen im html ersetzt werden, das wird vermutlich dein problem sein - dementiert oder bestätigt hast du das nicht, du hast lediglich 2 stunden "herumprobiert" und nichtmal ansatzweise die frage gestellt, wie du verhindern könntest, dass dir der reguläre ausdruck auch dein markup zerstört (falls das überhaupt passiert, du lieferst ja kein codebeispiel)