• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

ä ü ö im array

SimoNxD

Mitglied
Hallo hab nen kleines Problem.

Hab ein Riesen Array. Wo teilweise auch ä ü ö drin vorkommt.
Wenn ich dies allerdings teile des Arrays ausgebe mit:

<?=$items_array[$Cat->vnum]?>

Zeigt er mir die Umlaute nicht an.
Hab schon Sachen wie

<meta charset="utf-8">
<meta http-equiv="content-type" content="text/html; charset=utf-8">

Probiert und dennoch, zeigt er mir Umlaute nicht an.
Was mache ich falsch?

65cc302e97.png


Das Fußballtriktot wird auf der Hompage so angezeigt im Array allerdings ist es so gespeichert:

440320185a.png


Weiß einer woran es liegt?
 
Werbung:
Tschuldige, war unterwegs.
Also Head bereich:

4bee148533.png


Ich mein, Umlaute im HTML script selbst, funktionieren einwandfrei, nur wenn ich die mit PHP ausgebe (arrays, strings, variablen) werden umlaute nicht angezeigt

17f7753a1a.png

d7dbd860e0.png
 
Zuletzt bearbeitet:
Werbung:
Dann kontrolliere mal den Zeichensatz deiner PHP-Dateien. Der muss einheitlich mit dem HTTP-Header-Zeichensatz sein.
 
Werbung:
Ich versteh zwar nicht wie man freiwillig damit arbeiten kann. Habe aber gelesen das man die Kodierung. Habe hier ein Link, weiß aber nicht ob das noch aktuell ist. Da der Beitrag wohl von 2010 ist und da gabs die CC noch nicht
 
So, mal nachgeschaut:

04a27e7316.png


Hab jetzt aber nochmal genauer nachgeschaut.
Also das Array bilde ich durch eine .txt datei. dort werden sachen ausgelesen und in ein Array geschrieben. (Damit die .txt datei nicht jedes mal sobald man Sachen davon braucht, erneut ausgelesen werden muss).

Nun habe ich das alte array gelöscht (items.global.php) und diese erneut erstellt, dann mal mein eigenes array (ohne auslesen) gebilded. Ergebniss: Er zeigt umlaute an.

Dann habe ich das array erneut aus der .txt datei generieren lassen und er zeigte mir bei der ausgabe wieder keine Umlaute an.

Hier mal die Datei, die aus der .txt ein Array bildet.

PHP:
  <?php
             $items_array = '$items_array';
               $userdatei = fopen("libs/item_names.txt","r"); $r=1;
               $itemsglobal = fopen("models/items.global.php","w");
               fwrite($itemsglobal, "<?php $items_array = array(");
                 while(!feof($userdatei)){
                  $zeile = fgets($userdatei,1024);
                  $out = explode("\t",$zeile);
                  if($zeile > 3){
                    fwrite($itemsglobal, '"'.$out[0].'" => "'.$out[1].'",');
                  }
                 ++$r;}
                 fwrite($itemsglobal, "); ?>");
               fclose($userdatei);
             fclose($itemsglobal);
             ?>
 
Werbung:
setz mal das hier vor deinem fwrite
PHP:
fwrite($itemsglobal, pack("CCC",0xef,0xbb,0xbf));

Ansonsten schonmal dran gedacht auf Datenbanken umzusteigen?

Aber noch ne Frage, erstellst du die txt Datei oder ist diese schon vorhanden? Weil wenn du die erstellst ist natürlich die Frage ob die Daten dort auch utf-8 sind. Und bei der items.global.php datei die selbe Frage, erstellst du die da erst oder ist diese schon vorhanden? Weil wenn du die da erstellst ist die PHP Datei vielleicht auch kein utf-8.
Aber versuch mal die eine Zeile noch hinzufügen, also nach Zeile 5.
 
Also die items.global.php existiert schon, es wird ledeglich reingeschrieben.

die .txt datei existiert auch schon, allerdings is sie bei jedem anwender Variabel, es kann durchaus vorkommen das die .txt datei bzw das array zu einem array mit mehr als ~6000 einträgen wird.

Was ist in diesen Fall schneller? Das array, oder die Datenbank?

mfG
 
Darf man fragen um was für Daten es sich da handelt? Also ich würde zur Verwaltung solcher Datenmenge auf jedenfall eine Datenbank empfehlen. Aber da kommt natürlich der Hoster und dein Können ins Spiel. Denn falls es ein free Hoster ist, dann ist es nicht immer sicher das eine MySQL Datenbank dabei ist. Und natürlich kommen dann die Programmierkenntnisse dazu. Zu Not musst du dir mal mysqli oder PDO anschauen.

Könntest durch die Datenbank schon alleine ersparnis haben, wenn sich Daten von Anwender zu Anwender wiederholen. Aber um das genau zu sagen müsste man mehr Infos haben.
Naja vielleicht wird sonst noch jemand anderer was dazu schreiben
 
Werbung:
Tschuldige, war fix einkaufen.

Also es handelt sich um Zuordnungen.

als beispiel:
DIe ID: 123, trägt den Namen "Rüstung".

Ich gestalte derzeit ein ACP, für ein Online Rollenspiel und will dieses später veröffentlichen, damit die Verwaltung leichter fällt, als alles über eine Datenbank zu machen.

Da aber in vielen Tabellen, nur die ID steht und die Zuordnung von ID => Name bei diesen Rollenspiel über eine .txt datei stattfindet (das ganze sieht so aus)

Code:
10   Schwert+0
11   Schwert+1
12   Schwert+2
13   Schwert+3
14   Schwert+4
15   Schwert+5
16   Schwert+6
17   Schwert+7
18   Schwert+8
19   Schwert+9

Muss ich jetzt einen weg finden, die ID aus der Datenbanktabelle auszulesen und als Name dieses Items auszugeben.
Da viele Serveradministratoren nicht wirklich was mit den zahlen anfängen können.

Daher die Idee mit dem Array, welches sich aus den oben gezeigten Ausschnitt einer .txt datei bildet.
In diesen Falle

PHP:
$items_array = array("10" => "Schwert+0", "11" => "Schwert+1");
usw.

Da sich aber diese Werte (ID und Name) von Server zu Server unterscheiden, muss ich diese .txt immer erst auslesen (die .txt exisitert immer) um dann die richtigen Zuordnungen zu haben.

Das große Problem wenn ichs Auslese und dann in die Datenbank schreibe ist:


Fatal error: Maximum execution time of 120 seconds exceeded in C:\Server\htdocs\acp\libs\install_items.php on line 27

Daran wirds scheitern. Da viele Administratoren (wie oben schon erwähnt) zwar einen eigenen Server besitzen, aber die Website (und somit das ACP) über einen Hoster laufen lassen.
Die Datenbank meist zwar nicht, aber das Limit bestimmt ja der Hoster, nicht die datenbank selbst (oder?!)

PDO wäre komplett neu für mich, mit mysqli arbeite ich permanent, ich wollte das ganze nur als Array speichern, da ich die befürchtung habe, das die Datenbankabfrage (6000 Einträge Auslesen und Ausgeben bzw Anzeigen lassen) zu lange dauert.
 
Das ist ja schrecklich wenn ich das richtig verstehe, dass die txt Datei schon von Server zu Server vorhanden ist. Ich dachte die erstellst du erst. Also ich hätte dann eher auf xml oder noch besser auf json zurück gegriffen anstelle einer txt Datei.
 
Werbung:
Dann mal zurück zur Eingangssituation. Hat das mit den Umlauten nun geklappt?
Ansonsten vielleicht utf8_encode probieren beim $out[1]
 
Hach ... Du bistn Engel, hät ich auch selbst drauf kommen können.

Jap utf8_encode hat funktioniert.
Das Problem allerdings jz ist die Lange ladezeit, wenn ich das Selectfeld öffne (aber denke mal egal über welche Art man es mache Datenbank oder Array, da es 6000 einträge sind, bleibt die ladezeit gleich)
 
Bitte sag nicht du lädst tatsächlich 6000 Einträge in ein Selectfeld o_O, sry aber sowas geht gar nicht. Hast du denn die Möglichkeit dies in Kategorien zu unterteilen, also ein Selectfeld zusätzlich wo du auswählen kannst
Rüstung, Waffen, sonstiges....

Also ich will niemanden auf die Füße treten aber falls das nicht geht finde ich die txt datei scheiße :D Also da gibt es wirklich ein haufen elegantere Methoden
 
Werbung:
Ich hänge mal die .txt an, ich schätze nicht das ich irgendwo etwas finden kann, womit ich das ganze in verschiedene Kategorien unterteilen kann (mit nem autopmatischen Script).

Die .txt ist ja von den machern, damit habe ich 0 zutun.
 

Anhänge

  • item_names.txt
    139,6 KB · Aufrufe: 6
Zurück
Oben