Camping_RIDER: Seiteneingaben in externer Datei speichern nur mit JS?

Beitrag lesen

Aloha ;)

Da mein Hirn noch tief in den Feiertagen steckt und ich das, was du zu RegExp geschrieben hast ein zweites Mal lesen müsste, um es zu verstehen, klinke ich mich mit ein paar zusätzlichen Gedanken einfach hier ein.

Hallo miteinander!

Hallöle ;)

  1. Zum Speichern von Text-Input über XMLHttpRequest/PHP

"Nach diesem Satz folgt ein Zeilenumbruch.
Dann kommt der nächste Satz."

...dann steht das in der Ausgabedatei exakt so drin, - jedoch nicht, wenn ich diese Datei mit dem Windows-Editor öffne(!), - denn dann steht da:

"Nach diesem Satz folgt ein Zeilenumbruch.Dann kommt der nächste Satz."

Das ist ein Phänomen, das wahrscheinlich mit dem Schimpfwort Windows im Namen des Editors zusammenhängt ;) Es liegt tatsächlich daran, dass die Konvention, was "newline" bedeutet, vom Betriebssystem abhängt. Das verursacht leider immer wieder Probleme. Tatsächlich ist es so, dass der Windows-Editor ("Notepad") eine unrühmliche Ausnahme darstellt, da er sich weigert, die newline-Sequenzen anderer Betriebssysteme zu interpretieren. (Tatsächlich hat Notepad sogar noch ein paar mehr Probleme)

Irgendwie muss also die Information, dass da ein Zeilenumbruch ist, zwar mit gespeichert werden, jedoch offenbar auf eine Art und Weise, dass dem Windows-Editor diese Information verborgen bleibt! Öffne ich die Datei hingegen mit einem anderen Programm - ausprobiert habe ich's mit Windows WordPad, Notepad++ sowie dem OpenOffice Writer - werden die Zeilenumbrüche ohne weiteres berücksichtigt! - Merkwürdig, oder? ;)

Außerdem ist mir aufgefallen, dass sich mit dem Speichern über XMLHttpRequest/PHP die Kodierung der Ausgabedatei ändert:

Ich hatte die Datei grundsätzlich mit UTF-8 w/o BOM kodiert, aber jedesmal wenn ich den Inhalt über die PHP-Speicherfunktion aktualisiere, ändert sich die Kodierung zu ANSI!

Kann man das in der PHP-Funktion irgendwie so notieren, dass das nicht passiert, also dass die Kodierung UTF-8 ohne Byte Order Mask bestehen bleibt??

file_put_contents ändert die Kodierung nicht, sondern speichert die Daten so, wie sie vorliegen, in einer Datei. Wenn du die Kodierung bewusst beeinflussen willst, so musst du dies vorher tun. Dazu kannst du die Funktion iconv nutzen. D.h. vor dem file_put_contents sowas notieren:

$content = iconv("CP1252","UTF-8", $content);

Ich hab jetzt mal angenommen, dass die input-Kodierung der Windows-Standard-Codepage für Europa entspricht. Die Bezeichnung ANSI ist leider nur ein Überbegriff. Schätze, dass das v.A. vom Betriebssystem des users abhängt. Da du aber ja eine deutsche Jura-Seite programmierst dürfte das so tun. Es kann leider aber sein, dass Notepad dann immer noch nicht damit arbeiten kann, selbst wenn es richtiges UTF-8 ist ;)

  1. Generelle Gedanken

Das Erstellen von Listeneinträgen für meine zahlreichen Menüs habe ich in JavaScript schon soweit simplifiziert wie möglich, z.B.:

b. Hinzufügen von EventListenern

function addEventListenerForList01(){

document.getElementById("BGBp611").addEventListener("click",BGBp611OnClick);
document.getElementById("BGBp612").addEventListener("click",BGBp612OnClick);

/* ... */

}


>   
> c. Schließlich die dazugehörigen Funktionen  
>   
> ~~~javascript

function BGBp611OnClick(){  

>   
> var text = document.getElementById("BGBp611Text") // wenn Text in HTML-Datei-eigener library  
>   
> addContentBox("Dienstvertrag",text);  
>   
> }  
>   
> function addContentBox(headline,content){  
>   
> /* ... */  
>   
> }

Wahrscheinlich geht das noch allgemeiner.

function pOnClick(e){  
  
 id = e.srcElement.id;  
  
 var text = document.getElementById(id+"Text") // wenn Text in HTML-Datei-eigener library  
  
 addContentBox(headlines[id],text);  
  
 }  
 

Im globalen Objekt headlines müsste dafür bei Initialisierung des BGBpXXX die entsprechende headline eingespeichert werden. Deutlich eleganter - kann ich aber nicht ohne entsprechendes Wisen: Statt headlines[id] kann man auch andere Mittel und Wege wählen, die Überschrift rauszubekommen, abhängig von der Verfügbarkeit der infos in deiner library...

function addEventListenerForList01(){  
  
    for (var p = 1; p <= 2385; p++) {  
        document.getElementById("BGBp"+p).addEventListener("click",pOnClick);  
    }  
  
/* ... */  
  
}

Vielleicht hilfts ja ;)

Grüße,

RIDER

--
Camping_RIDER a.k.a. Riders Flame a.k.a. Janosch Zoller
ch:? rl:| br:> n4:? ie:% mo:| va:) js:) de:> zu:) fl:( ss:| ls:[