Page 1 of 2

chars like ä,ü,ö,@ etc...

Posted: Wed Nov 03, 2004 8:18 am
by sebastian
Hello

is there some module or addon aviable which does tranform the special chars like ä,ü,ö,@ or others in their html-names or unicodes for example

source in database:

Code: Select all

<b>Hello this text contains</b> ä,ü,ö.
source on user side:

Code: Select all

<b>Hello this text contains</b> ä,ü,&ouml.
Thank you for your help

chars like ä,ü,ö,@ etc...

Posted: Wed Nov 03, 2004 11:26 am
by piratos
Aha - ein typisch deutsches Problem, deswegen auch mal in deutsch an dieser Stelle.

Mir ist das Problem als solches klar - deutsche Sonderlaute korrekt darstellen, aber was soll das Modul bewirken und an welcher Stelle bzw. wo soll es greifen ?

Und - muss es ein ganzes Modul sein, eine Anzeige läßt sich durch simples tauschen bewirken.

chars like ä,ü,ö,@ etc...

Posted: Wed Nov 03, 2004 11:53 am
by Anonymous
Ganz einfach...

Da der integrierte editor htmlare (oder wie der immer heisst) die html-namen automatisch wieder in ü oder was auch immer zurückverwandelt, soll bevor der inhalt und die navigation ausgegeben werden das modul über alles rüberlaufen und die umlaute wieder in html-namen umwandeln.

PS: es würde schon reichen, wenn irgendwo eine doku über cmsmadesimple erhältlich wäre, welche die funktionsweise des system erklärt (was, wann, wie, wo).

chars like ä,ü,ö,@ etc...

Posted: Wed Nov 03, 2004 12:00 pm
by sebastian
Sorry ich = guest

chars like ä,ü,ö,@ etc...

Posted: Wed Nov 03, 2004 12:08 pm
by piratos
Dazu wird kein Modul benötigt, man sollte nur an richtiger Stelle unmittelbar vor dem Speichern den Inhalt wandeln so z.B.

$vari = "Wäre ich ein Holzfäller, so müßte ich Bäume fällen. üöäÜÖÄß";

$array = array ("ä" => "ä", "ü" => "ü","ö"=>"ö", "ß" => "ß","Ä"=>"Ä","Ö"=>"Ö","Ü"=>"Ü");
$vari = strtr($vari, $array);
echo $vari;
//$vari wurde umgewandelt in
//Wäre ich ein Holzfäller, so müßte ich Bäume fällen. üöäÜÖÄß
//Die Ausgabe ist korrekt auf Umlaute
//Die Charcodeeingabe ist besser als z.B &aumli; da sie immer funktioniert

Die eigentliche Funktion ist die strtr - eine PHP - Standardfunktion die hier in dem Beispiel den Inhalt der Variablen $vari bearbeitet , die Weisheiten holt es aus dem Array $array, das leicht auf die benötigten Werte zu ändern ist.

Hier im Forum wird das Array vom Inhalt allerdings gleich korrekt angezeigt, so das der Code etwas unverständlich dargestellt wird.


ä hat z.B. den Code & # 2 2 8 ; (Zusammen geschrieben und nicht auseinander.

also im Arrray ist es dann "ä"=>"& # 2 2 8 ;" usw. - so wird dann auch die übersetzte Variable sein, die hier allerdings gleich korrekt angezeigt wird.

chars like ä,ü,ö,@ etc...

Posted: Wed Nov 03, 2004 12:16 pm
by sebastian
danke für den tipp...

nur weiss ich nich welche datei für was ist...
also wenn ich die source von /admin/editcontent.php richtig verstanden habe dann sollte ich diese datei erweitern oder?

chars like ä,ü,ö,@ etc...

Posted: Wed Nov 03, 2004 1:15 pm
by sebastian
geht immer noch nicht...

ich habe jetz in der datei /index.php

follgendes eingefügt: (die & x x x sind in wirklichkeit ohne abstände)

Code: Select all

$replacearray = array("ä" => "& a u m l;", "ü" => "& # 2 5 2;","ö"=>"& # 2 4 6;", 
                                     "ß" => "&  # 2 2 3;", "Ä" => "& # 1 9 6;","Ö" => "& # 2 1 4;", 
                                     "Ü" => "& # 2 2 0;", "@" => "& # 0 6 4;", "é"=>"& # 2 3 3;", 
                                     "„"=> "& # 8 2 2 2;", "â€

chars like ä,ü,ö,@ etc...

Posted: Thu Nov 04, 2004 8:55 am
by piratos
Ich glaube nichts.

Das Thema interessiert mich schon, da ich auf dem W´ebserver keinerlei Probleme habe und auch nichts umfummeln muss.

Aber auf Grund dieser Schilderung musste ich feststellen, das ich nunmehr lokal (Suse aber auch Lampp) das gleiche Problem habe.

In einer separaten Testdatei funktioniert das umfummeln und ich kann bestätigen unter CMS nicht - da erscheinen ? Zeichen, was bedeutet, das hier die Funktion nicht greift, da die Umlaute in anderer Form angeboten werden und so gesehen die Funktion die äöü usw. nicht finden und damit nicht tauschen kann.

Werde mal weiter fummeln, wenn das nicht gelöst ist, kann ich diese cms nicht verwenden.

chars like ä,ü,ö,@ etc...

Posted: Thu Nov 04, 2004 10:24 am
by piratos
Es gibt nur eine Lösung , nicht nach den Zeichen suchen, sondern nach dem Ordinalwert.

Und --- trara - diese Lösung funktioniert.

Also diesen Code in der index.php einsetzen (vorher nach belieben ändern).

Code: Select all

$lg = strlen($html);
if ($lg>0) {
$out="";
$i=0;
while ($i<$lg){
$ch=substr($html,$i,1);
$var = ord($ch); 
$ch2="";
switch ($var) {
//ß
    case 223:  
        $ch2="& #223;";
        break;
//Ü
    case 220:
        $ch2="& #220;";
        break;
//ü
    case 252:
        $ch2="& #252;";
        break;
//Ö
	 case 214:
        $ch2="& #214;";
        break;
//ö
    case 246:
        $ch2="& #246;";
        break;
//Ä
    case 196;
        $ch2="& #196;";
        break;
//ä
    case 228:
        $ch2="& #228;";
        break;
  
}
if ($ch2<>""){$out.=$ch2;}else{$out.=$ch;};
$i++;
};
$html=$out;
};
	echo $html;
Ich habe das bei mir ausprobiert und es funktioniert.

chars like ä,ü,ö,@ etc...

Posted: Thu Nov 04, 2004 10:37 am
by piratos
Und nachfolgender Code ist das gleiche in grün, jedoch einfacher und setzt alle Zeichen >128 in &# number ; - es wird also eigentlich keine Änderung benötigt

Code: Select all

$lg = strlen($html);
if ($lg>0) {
$out="";
$i=0;
while ($i<$lg){
$ch=substr($html,$i,1);
$var = ord($ch); 
if ($var > 127)
{
$out.="&#".$var.";";
}
else
{
$out.=$ch;
};
$i++;
};
$html=$out;
};
	echo $html;


chars like ä,ü,ö,@ etc...

Posted: Thu Nov 04, 2004 1:31 pm
by sebastian
cool.

da wär ich jetz nie drauf gekommen... da sehe ich mal wieder das ich noch überhaupt nichts weiss und viel zu lernen habe :D

chars like ä,ü,ö,@ etc...

Posted: Thu Nov 04, 2004 3:33 pm
by piratos
Funktioniert es ??

Diese kleine Änderung macht das noch ein wenig schneller.

Code: Select all

//$ch=substr($html,$i,1);
$ch=$html[$i];

chars like ä,ü,ö,@ etc...

Posted: Thu Nov 04, 2004 5:54 pm
by piratos
Habe nun auch herausbekommen,warum ich auf einmal lokal eine Falschdarstellung erhalte, was vorher nicht der Fall war.

Der lokale Apache - Webserver war lokal auf den falschen Zeichensatz eingestellt und korrespondierte nicht mit der Einstellung in der CMS , die da ist:




Haber das bei mir korrigiert und nun läuft es so wie es auf dem lokalen Webserver so wie auf dem öffentlichen.

Diese Scriptlösung ist also bei korrekter Einstellung völlig überflüssig und kostet nur Zeit.

chars like ä,ü,ö,@ etc...

Posted: Wed Dec 29, 2004 6:47 pm
by foen
Hi ihr, da ich das selbe Problem hab, aber noch nich hab lösen können, mische ich mich da mal ein, bzw hoffe auf Hilfe :wink:
Ich habe den von piratos genannten "PHP-Part"

Code: Select all

//--- ÄÖÜ ersetzen--->
$lg = strlen($html);
if ($lg>0) {
$out="";
$i=0;
while ($i<$lg){
$ch=$html[$i]; 
$var = ord($ch);
if ($var > 127)
{
$out.="&#".$var.";";
}
else
{
$out.=$ch;
};
$i++;
};
$html=$out;
};
   echo $html; 
   //--- ÄÖÜ ersetzen--->
in die Index eingefügt. Irgendwie scheint es auch zu funktionieren. Nur leider wird mir in der richtigen Ansicht dann das ganze zweimal gelistet. Einmal falsch, und darunter kommt die verbesserte Variante mit ersetzten Umlauten...
Woran liegt das?

chars like ä,ü,ö,@ etc...

Posted: Fri Dec 31, 2004 1:48 pm
by foen
:roll:
schon gecheckt, hehe