Symbol-Tag

[ADMIN] Hier wird alles, was planetweizen selbst betrifft, bekanntgegeben und diskutiert.

Moderatoren: tuff, Bergfrühling, Weizen, Kwolfli

Antworten
Benutzeravatar
Weizen
Cheffe
Cheffe
Beiträge: 3573
Registriert: 08.04.2002 - 15:37
Wohnort: Deizisau
Kontaktdaten:

Symbol-Tag

Beitrag von Weizen »

[symbol]Cairete![/symbol]
Zuletzt geändert von Weizen am 28.12.2004 - 13:06, insgesamt 1-mal geändert.
Benutzeravatar
Weizen
Cheffe
Cheffe
Beiträge: 3573
Registriert: 08.04.2002 - 15:37
Wohnort: Deizisau
Kontaktdaten:

Beitrag von Weizen »

Damit ihr auch halbwegs richtig Griechisch reden könnte hab ich mal einen Symbol-Tag eingebaut. Text, der zwischen [symbol] und [/symbol] steht wird in der Schriftart Symbol angezeigt.

Die Schriftgröße ist auf 16px gestellt, im Gegensatz zu den 12px bei normalem Text. Wenn du (wie im oberen Posting) eine andere Schriftgröße eingestellt haben willst, dann muss der size-Tag innerhalb des Symbol-Tags stehen, sonst wird die Schriftgröße ignoriert.

Also richtig: [symbol][size=24]Cairete![/size][/symbol]
Und falsch: [size=24][symbol]Cairete![/symbol][/size]

Zur Erklärung: Im ersten Fall wird die Schriftart auf Symbol, die Größe auf 16 und danach die Größe auf 24 gestellt. Im zweiten Fall wird zuerst die Größe auf 24, dann die Schrift auf Symbol und die Größe wieder auf 16 gestellt. Vor Allem bei einzelnen griechischen Wörtern in größer geschriebenem Text also drandenken!

Viel Spaß damit!
SYNTAX? Why not - they tax everything else!
Benutzeravatar
Weizen
Cheffe
Cheffe
Beiträge: 3573
Registriert: 08.04.2002 - 15:37
Wohnort: Deizisau
Kontaktdaten:

Beitrag von Weizen »

Ab sofort ist der symbol-Tag vollkommen anders implementiert und funktioniert damit auch in Mozilla und Firefox. Statt einfach eine andere Schriftart zu verwenden werden jetzt alle Buchstaben durch ihre Entsprechungen in der Schriftart Symbol ersetzt, also z.B. a durch α (α), h durch η (η) usw.

Dadurch gibt es eine wichtige Änderung in der Benutzung des Symbol-Tags: War es bisher so, dass [symbol] außen und alle weiteren Textauszeichnungen innnen stehen mussten, so ist es jetzt gerade umgekehrt.

Also richtig: [size=24][symbol]Cairete![/symbol][/size]
Und falsch: [symbol][size=24]Cairete![/size][/symbol]

Letzteres führt zu folgendem Ergebnis:

<[symbol]span style=[/symbol]"[symbol]font-size: 24px; line-height: normal[/symbol]">[symbol]Cairete![/symbol]

Das heißt, der HTML-Code, der die Schriftgröße ändert, wird ebenfalls durch griechische Buchstaben ersetzt.
SYNTAX? Why not - they tax everything else!
Benutzeravatar
Weizen
Cheffe
Cheffe
Beiträge: 3573
Registriert: 08.04.2002 - 15:37
Wohnort: Deizisau
Kontaktdaten:

Beitrag von Weizen »

Und weiter gehts: Ich habe die Funktion jetzt etwas umgeschrieben; jetzt wird HTML-Code genauso wie Smilies und benannte Zeichen nicht mehr umgewandelt, d.h. man sollte in [symbol]-Blöcken genauso schreiben können wie außerhalb :) (Klärt mich auf, wenn ich mich täuschen sollte ;))
SYNTAX? Why not - they tax everything else!
Kwolfli
Modiator
Modiator
Beiträge: 2804
Registriert: 11.04.2002 - 17:59
Wohnort: Hohenhaslach
Kontaktdaten:

Beitrag von Kwolfli »

Den passenden Code könntest du gleich zum kwf beitragen. Da geht bisher auch innerhalb des greek-Tags nichts anderes mehr. ;)
The first 90% of the code accounts for the first 90% of the development time.
The remaining 10% of the code accounts for the other 90% of the development time.
Benutzeravatar
Weizen
Cheffe
Cheffe
Beiträge: 3573
Registriert: 08.04.2002 - 15:37
Wohnort: Deizisau
Kontaktdaten:

Beitrag von Weizen »

Auszug aus der bbcode.tpl, function bbencode_first_pass:

Code: Alles auswählen

$text = preg_replace&#40;"#\&#91;symbol\&#93;&#40;.*?&#41;\&#91;/symbol\&#93;#si", "&#91;symbol&#58;$uid&#93;\\1&#91;/symbol&#58;$uid&#93;", $text&#41;;
Auszug aus der bbcode.tpl, function bbencode_second_pass (ganz unten, wo bereits alles Andere in HTML umgewandelt ist):

Code: Alles auswählen

$text = preg_replace&#40;"#\&#91;symbol&#58;$uid\&#93;&#40;.+?&#41;\&#91;/symbol&#58;$uid\&#93;#ies", "symbolify&#40;'\\1'&#41;", $text&#41;;
Neue Funktion in der functions.php:

Code: Alles auswählen

function symbolify&#40;$text&#41;
&#123;
 $alt = array &#40;"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K",
               "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V",
               "W", "X", "Y", "Z", "a", "b", "c", "d", "e", "f", "g",
               "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r",
               "s", "t", "u", "v", "w", "x", "y", "z"&#41;;
 $neu = array &#40;"&Alpha;", "&Beta;", "&Chi;", "&Delta;", "&Epsilon;",
               "&Phi;", "&Gamma;", "&Eta;", "&Iota;", "&thetasym;",
               "&Kappa;", "&Lambda;", "&Mu;", "&Nu;", "&Omicron;",
               "&Pi;", "&Theta;", "&Rho;", "&Sigma;", "&Tau;",
               "&Upsilon;", "&sigmaf;", "&Omega;", "&Xi;", "&Psi;",
               "&Zeta;", "&alpha;", "&beta;", "&chi;", "&delta;",
               "&epsilon;", "&phi;", "&gamma;", "&eta;", "&iota;",
               "&phi;", "&kappa;", "&lambda;", "&mu;", "&nu;",
               "&omicron;", "&pi;", "&theta;", "&rho;", "&sigma;",
               "&tau;", "&upsilon;", "&piv;", "&omega;", "&xi;",
               "&psi;", "&zeta;"&#41;;

 $erg = "";
 $ignore = false;
 // HTML / benannte Zeichen nicht symbolifizieren!
 $text = str_replace &#40;'\"', '"', $text&#41;;
 // Damit HTML funktioniert
 $text = str_replace &#40;'&amp;', '&', $text&#41;;
 // Damit direkt eingegebene benannte Zeichen funktionieren

 for &#40;$i = 0; $i < strlen&#40;$text&#41;; $i++&#41;
 &#123;
  $ersetzt = false;
  if &#40;&#40;$text&#91;$i&#93; == "<"&#41; || &#40;$text&#91;$i&#93; == "&"&#41;&#41;
  // HTML-Block / benannte Zeichen ignorieren
  &#123;
   $ignore = true;
  &#125;
  elseif &#40;&#40;$text&#91;$i&#93; == ">"&#41; || &#40;$text&#91;$i&#93; == ";"&#41;&#41;
  // HTML-Block zu Ende
  &#123;
   $ignore = false;
  &#125;
  elseif &#40;!$ignore&#41;
  // Zeichen nicht in einem HTML-Block oder benannten Zeichen
  &#123;
   for &#40;$j = 0; $j < 52; $j++&#41;
   // Entsprechung suchen und ersetzen
   &#123;
    if &#40;$text&#91;$i&#93; == $alt&#91;$j&#93;&#41;
    &#123;
     $erg .= $neu&#91;$j&#93;;
     $ersetzt = true;
    &#125;
   &#125;
  &#125;
  if &#40;!$ersetzt&#41; $erg .= $text&#91;$i&#93;;
  // Wenn nichts ersetzt wurde
 &#125;

 // Jetzt müssen nur noch die Smilies wiederhergestellt werden&#58;
 $erg = str_replace&#40;"&#58;&Delta;", "&#58;D", $erg&#41;;
 $erg = str_replace&#40;"&#58;&epsilon;&epsilon;&kappa;&#58;", "&#58;eek&#58;", $erg&#41;;
 $erg = str_replace&#40;"&#58;&chi;&omicron;&omicron;&lambda;&#58;", "&#58;cool&#58;", $erg&#41;;
 $erg = str_replace&#40;"&#58;&mu;&alpha;&delta;&#58;", "&#58;mad&#58;", $erg&#41;;
 $erg = str_replace&#40;"&#58;&Pi;", "&#58;P", $erg&#41;;
 $erg = str_replace&#40;"&#58;&rho; &omicron;&lambda;&lambda;&epsilon;&psi;" .
   "&epsilon;&sigma;&#58;", "&#58;rolleyes&#58;", $erg&#41;;
 $erg = str_replace&#40;"&#58;&tau;&omicron;&pi;&#58;", "&#58;top&#58;", $erg&#41;;
 $erg = str_replace&#40;"&#58;&phi;&lambda;&omicron;&pi;&#58;", "&#58;flop&#58;", $erg&#41;;
 $erg = str_replace&#40;"&#58;&chi;&omicron;&nu;&phi;&upsilon;&sigma;&epsilon;" .
   "&delta;&#58;", "&#58;confused&#58;", $erg&#41;;
 $erg = str_replace&#40;"&#58;&iota;&delta;&epsilon;&alpha;&#58;", "&#58;idea&#58;", $erg&#41;;
 $erg = str_replace&#40;"&#58;&alpha;&rho;&rho;&omicron;&omega;&#58;", "&#58;arrow&#58;", $erg&#41;;
 $erg = str_replace&#40;"&#58;&chi;&rho;&psi;&#58;", "&#58;cry&#58;", $erg&#41;;
 $erg = str_replace&#40;"&#58;&phi;&rho;&omicron;&omega;&nu;&#58;", "&#58;frown&#58;", $erg&#41;;
 $erg = str_replace&#40;"&#58;&omega;&eta;&alpha;&tau;&#58;", "&#58;what&#58;", $erg&#41;;
 $erg = str_replace&#40;"&#58;&epsilon;&piv;&iota;&lambda;&#58;", "&#58;evil&#58;", $erg&#41;;
 $erg = str_replace&#40;"&#58;&kappa;&epsilon;&kappa;&sigma;&#58;", "&#58;keks&#58;", $erg&#41;;
 $erg = str_replace&#40;"&#58;&beta;&iota;&sigma;&sigma;&#58;", "&#58;biss&#58;", $erg&#41;;

 return $erg;
&#125;
SYNTAX? Why not - they tax everything else!
Benutzeravatar
Weizen
Cheffe
Cheffe
Beiträge: 3573
Registriert: 08.04.2002 - 15:37
Wohnort: Deizisau
Kontaktdaten:

Beitrag von Weizen »

Ich häng das hier einfach mal mit dran: Benannte Zeichen werden jetzt auch in der Vorschau und im Topic Review ("Thema-Überblick", der iframe beim Antwort erstellen) richtig dargestellt; außerdem gibt es soweit ich das sehe keine Probleme mehr, wenn mehrere dieser Zeichen direkt aufeinander folgen :)
SYNTAX? Why not - they tax everything else!
Antworten