anpera.net

anpera.net

experimental server @home
Aktuelle Zeit: Mo 10 Dez, 2018 23:18

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 29 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
BeitragVerfasst: Mo 25 Jun, 2018 14:36 
Offline
User
User

Registriert: So 12 Mär, 2017 03:00
Beiträge: 23
Okay, ich werd mir also einen Kaffee genehmigen und nochmal drübergehen. :D
Und ja, die komplette Änderung wird nicht übernommen. Man hängt quasi mit der Vorschau fest, weil man angeblich einen falschen Namen eingegeben hätte. Außer, man lässt die Sonderzeichen weg. Dann funktionierts seltsamerweise.

Screenshot gibt es hier

Und was den Page-header in der Bio betrifft: Der Fehler betrifft derzeit nur einen User, weil er Sonderzeichen in der Farbgebung seines Titels hat. Vergeben wurde der durch mich in der Grotte. Sehen tun wir aber alle "Denkt an �Br�uc�hp�ilot Hoél Yvans".


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mo 25 Jun, 2018 18:19 
Offline
Großmeister
Großmeister

Registriert: Fr 01 Jul, 2005 18:41
Beiträge: 475
Wohnort: Saarbrücken
Geschlecht: Männlich
bio.php

PHP:
page_header("Denkt an ".preg_replace("/[`][".$appoencode_str."]/","",$row[name]));


ersetze mit:

PHP:
page_header("Denkt an ".$row['name']." ");


Zur Lodge:

Gib Demras im Spiel mal bitte Donationspoints ( genügend! ) damit ich mal was probieren kann. Vom Code an sich seh ich jetzt keinen Fehler.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mo 25 Jun, 2018 21:32 
Offline
User
User

Registriert: So 12 Mär, 2017 03:00
Beiträge: 23
Mit der Änderung wird nun das ausgeworfen: Denkt an `ùBr`óuc`áhp`Àil`[o`Tt H`Aoé`yl Yvans
:/

Aber an DPs soll es Demras jetzt nicht mangeln. :D


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di 26 Jun, 2018 08:37 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3898
Wohnort: Basel
Geschlecht: Männlich
Waldmonster hat geschrieben:
Okay, ich werd mir also einen Kaffee genehmigen und nochmal drübergehen. :D
Und ja, die komplette Änderung wird nicht übernommen. Man hängt quasi mit der Vorschau fest, weil man angeblich einen falschen Namen eingegeben hätte. Außer, man lässt die Sonderzeichen weg. Dann funktionierts seltsamerweise.

Screenshot gibt es hier

Und was den Page-header in der Bio betrifft: Der Fehler betrifft derzeit nur einen User, weil er Sonderzeichen in der Farbgebung seines Titels hat. Vergeben wurde der durch mich in der Grotte. Sehen tun wir aber alle "Denkt an �Br�uc�hp�ilot Hoél Yvans".


Ah, die Information war gut.

logde.php, die folgenden Zeilen:

Code:
$comp1 = strtolower(preg_replace("/[`][".$appoencode_str."]/","",$regname)); // no black, no background colors
$comp2 = strtolower(preg_replace("/[`][".$appoencode_str."]/","",$_POST['newname']));


preg_replace ersetzt alle Farbcodes - spezifischer, er setzt das Byte für ` und das darauf folgende (byte). Bei multi-byte-Zeichen würde nur das erste Byte ersetzt werden... Probier mal:

Code:
$comp1 = strtolower(preg_replace("/[`][".$appoencode_str."]/u", "", $regname)); // no black, no background colors
$comp2 = strtolower(preg_replace("/[`][".$appoencode_str."]/u", "", $_POST['newname']));


Für den page_header probier das hier:

Code:
page_header("Denkt an ".preg_replace("/[`][".$appoencode_str."]/u", "", $row['name']));


Edit: Den Ersatz-Code etwas verschönert.


Zuletzt geändert von Eliwood am Di 26 Jun, 2018 14:35, insgesamt 1-mal geändert.
Rechtschreib-Korrektur


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di 26 Jun, 2018 14:33 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3898
Wohnort: Basel
Geschlecht: Männlich
(Bitte diesen Post ignorieren).


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di 26 Jun, 2018 15:11 
Offline
User
User

Registriert: So 12 Mär, 2017 03:00
Beiträge: 23
Funktioniert beides wunderbar. Ich hatte ja schon ein wenig die Hoffnung aufgegeben.
Danke!
Aber was macht das u denn konkret in diesem Fall? Also wofür steht das, wenn ich so dreist fragen darf?


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di 26 Jun, 2018 16:36 
Offline
Großmeister
Großmeister

Registriert: Fr 01 Jul, 2005 18:41
Beiträge: 475
Wohnort: Saarbrücken
Geschlecht: Männlich
Korrigier mich wenn ich falsch liege Eli.

@Waldmonster

Der Lösungsansatz von Eli behandelt Suchmuster und durchsuchte Zeichenkette als UTF-8.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do 28 Jun, 2018 19:06 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3898
Wohnort: Basel
Geschlecht: Männlich
Exakt.

Das Problem ist, dass die Dateien als UTF-8 gespeichert sind. Das heisst, ein "ä" besteht nun aus 2 Bytes: "C3 A4". Um alle (gültigen) Farbcodes aus einem Namen zu streichen, verwendet LotGD eine regular expression. Im folgenden Code-Zitat ist $appoencode_str eigentlich nichts mehr als eine Liste aller Farbcodes ohne Apastroph:

Code:
preg_replace("/[`][".$appoencode_str."]/", "", $regname)


Angenommen, der einzige Farbcode wäre `ä, würde die Ausgabe von $appoencode_str nichts besonderes anzeigen und das Stück Code wird zu:

Code:
preg_replace("/[`][ä]/", "", $regname)


Was man allerdings nicht sieht, ist die Codierung. In Bytes geschrieben, würde das so aussehen:

Code:
preg_replace("/[`][\xC3\xA4]/", "", $regname)


Standardgemäss behandelt preg_replace den String aber nicht als utf8. (Okay, eigentlich behandelt keine Funktion < PHP7 utf8 string als solche, ausser, man notiert es explizit. Und nicht alle Funktionen unterstützen das. strlen("ä") gibt zum Beispiel eine Länge von 2 an, mb_strlen("ä") eine von 1.) Für die RegExp schaut es so aus, als ob das 2 Farbcodes sind! Je nach Konfiguration (bzw je nach Zeichentabelle) ist der folgende Code eigentlich zutreffender (in dem Fall, ISO 8859-1):

Code:
preg_replace("/[`][ä]/", "", $regname)


Das heisst, die RegExp erkennt hier 2 Farbtags: `Ã (Vergleich das mit deinem ersten Screenshot vom Originalpost - fällt dir auf, dass du viele Farbcodes mit dem Zeichen hast? Jetzt weisst du warum!) und `¤. Aber keinen Farbtag `ä!

Der RegExp-Modifier "u" aktiviert "utf8-Verständnis" seitens der RegExp-Engine. Der RegExp versteht nun, dass C3A4 ein einziges Zeichen ist: ä, und ersetzt es dementsprechend auch richtig.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So 01 Jul, 2018 03:40 
Offline
User
User

Registriert: So 12 Mär, 2017 03:00
Beiträge: 23
Aaaah! Jetzt macht das auch Sinn.
Vielen lieben Dank an euch beiden! :)


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 29 Beiträge ]  Gehe zu Seite Vorherige  1, 2

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Du darfst keine neuen Themen in diesem Forum erstellen
Du darfst keine Antworten zu Themen in diesem Forum erstellen
Du darfst deine Beiträge in diesem Forum nicht ändern
Du darfst deine Beiträge in diesem Forum nicht löschen
Du darfst keine Dateianhänge in diesem Forum erstellen

Suche nach:
Gehe zu:  
cron
POWERED_BY
Deutsche Übersetzung durch phpBB.de
anpera.net - Impressum