Zum einen verstehe ich nicht, warum Du hier überhaupt mit Vererbeitung arbeitest ... die Verteilerklasse hat ja nix mit den Unterklassen gemein. Außerdem scheint mir der Sinn dieses Verteilers auch recht obskur zu sein. An sich sollte von außen eine Anfrage an den Verteiler gehen, der gibt's weiter an ein Objekt, das wiederrum einen Funktionswert zurückliefert. Anhand der Rückgabe kann der Verteiler dann entscheiden, ob er jetzt z.B. noch eine Lampe blinken lässt..
Ankündigung
Einklappen
Keine Ankündigung bisher.
User helfen User - Programmieren
Einklappen
X
-
Moin,
ich hab eine txt-Datei, die mehrere Arrays enthält. Jedes Array hat Dateinamen, z.B:
a = [ "1.jpg", "2.jpg", ... ];
b= [ "3.jpg", "4.jpg", ... ];
wie kann ich in PHP auf z.B. Array b zugreifen? Geht darum, dass ich die Dateinamen aus dem Array brauche und damit weiterarbeiten muss
Also es geht nicht darum, eine ganze txt-Datei auszulesen, sondern ich brauche eins dieser Arrays
Kommentar
-
Ließ die Textdatei bis der Name der Variable dort steht, dann speichere die Zeile und lösche die Zeichen bis (inklusive) "[" und allen Zeichen nach (inklusive) "]". Den entstandenen String trimst du und splittest ihn an den ",", worauf hin du die Einzelnen Strings nochmal trimmst und die '"' durch '' ersetzt. Jetzt hast du ein Array, welches die Dateinamen enthält.
Kommentar
-
wenn die dateien gültigen und syntaktisch richtigen php code enthalten, kannst den inhalt auch einfach einlesen und dann mit eval ausführen. aber vorsicht, das ist extrem gefährlich. lieber vorher per regex nochmal parsen und nur das gewünschte aus der datei per eval ausführen.
würde daher für das dateiformat auch was anderes vorschlagen wie json oder xml, was sich besser ein/auslesen lässt ;)
Kommentar
-
Also irgendwie komm ich nicht weiter, daher mal genauere Erklärung.
Die txt-Datei sieht so aus (die Struktur muss so bleiben):
var var_bildernamen_vor_16_uhr = [
"05_Do.jpg",
"07_Do.jpg",
"09_Sa.jpg",
"10_Sa.jpg",
"11_Sorti.jpg"
];
var var_bildernamen_nach_16_uhr = [
"05_Do.jpg",
"07_Do.jpg",
"09_Sa.jpg",
];
Ich habe eine Tabelle, in der ersten Spalte befinden sich die Bildernamen, in der zweiten und dritten Spalte befindet sich jeweils eine Checkbox (vor 16 Uhr, nach 16 Uhr).
Ich muss beide Arrays auslesen und z.B. die Datei "05_Do.jpg" ist ja in beiden Arrays drin, daher müssen in der Tabelle beide Checkboxen gechecked werden, bei "11_Sorti" nur die erste Checkbox usw.
Später soll es dann auch möglich sein, dass ich durch abhaken der Checkboxen den Inhalt der txt verändern kann, also dass ein Bild zu dem jeweiligen Array hinzugefügt wird.
Diese txt-Datei ist quasi ne Config, aus der später mit Javascript eine Bildershow erstellt wird
Kommentar
-
Hattest du nicht vor ein paar Seiten auch etwas mit Bilder vor/nach 16 Uhr? Unter einem anderen Nick?
Mit deiner gegebenen Syntax: http://pastebin.com/TccBN20q
Ist der Ansatz von panda. Wenn du jedoch weißt wie du es sicher bekommst, würde ich die eval Version von michi bevorzugen, da du das array dann 1:1 übernehmen kannst.
Kommentar
-
ist mittlerweile durch nen Kollegen durch reguläre Ausdrücke gelöst worden:
foreach (["var_bildernamen_vor_16", "var_bildernamen_nach_16", ...] as $var){
preg_match_all("/(.*)?".$var."[ ]*=[ ]*\[([\"a-zA-z0-9\,\ \_\.]*)\](.*)/", $config, $matches);
$bilder = explode(",", str_replace(['"', ' '], "", $matches[2][0]));
$vars[$var] = $bilder;
}
Leider raff ich das mit den Ausdrücken nicht und Kollege ist im Urlaub.
Ich hab jetzt noch eine Datei, die ähnlich aussieht, aber nicht identisch:
var var_systemID = "se";
var pv_aktiv = false;
var pv_ip = "127.0.0.1";
var pv_port = "8090";
Jetzt muss der Ausdruck so umgebaut werden, dass es hier passt und ich jeweils die Werte bekomme. Sitze da seit 3 Stunden dran und es klappt einfach nicht
Kommentar
-
tu dir selbst nen gefallen und schau dir einfach ein regex tutorial an. dann verstehst du es auch. das regex von deinem kollegen ist zwar schon etwas komplizierter aufgrund mehrerer capture groups, aber wenn du das verstanden hast, wirst du mit regex nie wieder probleme haben.
https://regex101.com/ ist z.b. ne super seite dafür (auch wenn sie mit dem regex subset von javascript arbeitet und daher nicht alle flags und lookahead/lookbehind/recursive searches unterstützt, die du in php zur verfügung hast. aber das ist sehr advanced zeug und sollte dich anfangs nicht interessieren.
Kommentar
-
Gast
Einfach durch den Array laufen und Überprüfen ob die Zahl schon vorkommt? Bei 6 Elementen haste da ja kein Problem mit der Laufzeit
Hier die 1. Antwort behandelt genau dein Problem in ner anderen Sprache. Wenn du was effizientes brauchst, es gibt (komplizierte) Möglichkeiten
Kommentar
-
Gast
Bei so nem Einsatz reicht das aus, würde aber aufpassen wenn du das ganze vergrößern willst. Das ganze ist extrem ineffizient
Kommentar
Kommentar