Suche auf lima-city
-
in: Verzeichnis-Struktur in Array ablegen ?
geschrieben von incdesign
Danke ... gute Idee mit glob()
... aber nur fast ... :)
wenn ein Ordner leer ist (keine Dateien drin) dann ist $files kein Array
Fehlermeldung:
Warning: array_merge() .... Argument #2 is not an array ...
also noch mit Erweiterung um die Kleinigkeit:
if (!$files) { $files = array(); } // --------- diese Zeile ist neu $tree = array_merge($tree, $files);
dann bekommt man leere Verzeichnisse als leeres Array ohne Fehlermeldung.
-
in: Verzeichnis-Struktur in Array ablegen ?
geschrieben von incdesign
ja Super, Danke
eigentlich ja ganz einfach, ich stand nur irgendwie auf dem Sclauch
hatte die Vorgehensweise ja eigentlich schon
incdesign schrieb:
... wenn Ordner, dann dessen Inhalte als Sub-Array ...
aber ich bin da viel zu kompliziert dran gegenagen
also einfach direkt das umsetzen ... wenn Ordner, dann als Array ... :)
... sowas nennt man dann doch: "rekrisiver Funktionsaufruf" ?!
Jetzt bin ich aber noch drauf gekommen, das es evtl. doch nicht so gut ist,
wenn die Ordner-/Datei- Namen als KEY im Array stehen,
also besser wäre wohl eine Struktur, die keine "Werte" als KEY hat.
sonden nur "nummeriche" Keys (int) .... aber das ist auch nicht ohne .. oO
... einfach Ebene als Key nehmen geht nicht,
weil ja pro Ebene auch mehrere Unterordner drin sein können
-
in: PHP-Function regelmäßig ausführen
geschrieben von incdesign
also ich habe den Code auch mal ausprobiert,
bei mir klappt es (alle 5 Sekunden neue Zahl)
sowohl im FF als auch im IE
hast Du evtl. JavaScript deaktiviert an Deinem Computer ?
oder hat Dein Browser / Webspace Cacheing aktiviert ?
Cacheing am Webspace "deaktivieren" kannst Du über .htaccess
Header set Cache-Control "must-revalidate, no-store, no-cache, max-age=0, pre-check=0, post-check=0" Header set Pragma "no-cache"
Es geht auch ohne jQuery (obwohl das nicht schlecht ist)
.... direkt mit Ajax ... jetzt mal alle 3 Sekunden
<html> <head> <title>TEST</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <script type="text/javascript"> function ajax_reload() { var xmlhttp; if (window.XMLHttpRequest) { xmlhttp=new XMLHttpRequest(); } else { xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById("myDiv").innerHTML=xmlhttp.responseText; } } var millisec = new Date().getTime(); xmlhttp.open("GET","reload1.php?ms=" + millisec + "",true); xmlhttp.send(); } // ----- set refresh-time in seconds var seconds = 3; // ---- convert to milliseconds var runinms = (seconds*1000); // ----- refresh after xxx (milli-)seconds var set_interval = setInterval( ajax_reload, runinms); // ----- first run when document is ready window.onload = ajax_reload; </script> <style type="text/css"> <!-- body { background: #FFFFFF; color: #000000; } #myDiv { font-family: "Times New Roman", Times, serif; font-size: 22px; color: #003366; text-align: center; margin: 0 auto; padding: 8px; width: 60px; height: 30px; background: #AACCFF; border: 1px solid #33AA00; } --> </style> </head> <body> <br> <br> <div style="text-align: center;"> <div style="margin: 0 auto; padding:6px; width:90px; height:50px; background:#AAFF99;"> <div id="myDiv"> </div> </div> </div> <br> <br> </body> </html>
das Anhängen der Millisekunden mit GET Parameter (hier: "?ms=") an reload1.php
bewirkt, dass jeder Aufruf eine eindeutige URL ist, um evtl. Cacheing zu verhindern
ist quasi eine Alternative zur Cache-Vermeidung
zu dem oben genannten Eintrag in eine .htaccess Datei
-
in: Mehrfach-Elemente in RSS item ?
geschrieben von incdesign
naja ... andere (bessere) XML Struktur wäre gut,
aber wenn man externe RSS-Quellen auslesen will,
dann kann man ja nicht die XML-Struktur ändern, da muss man nehmen was ankommt.
... zumal auch Wordpress RSS diese mehrfachen <category> Elemente in <item> leifert.
Idee wäre zu Prüfen, ob ein Element mind. ein zweites mal vorkommt,
und wenn ja, dann diese zweite foreach() darauf anwenden.
Hier mal mein Workaround mit dem Beispiel:
(1) Der Inhalt der Datei: test1.rss
<?xml version="1.0" encoding="UTF-8"?> <rss version="2.0"> <channel> <title>Name der Seite</title> <link>http://example.org</link> <description>Berichte und Artikel</description> <lastBuildDate>Fri, 05 Apr 2013 11:51:37 +0000</lastBuildDate> <language>de-DE</language> <item> <title>Irgend ein Artikel</title> <link>http://example.org/index.php?page=116</link> <pubDate>Fri, 05 Apr 2013 11:51:37 +0000</pubDate> <category><![CDATA[Artikel]]></category> <category><![CDATA[Internet]]></category> <category><![CDATA[Sonstiges]]></category> <category><![CDATA[Lesestoff]]></category> <guid>116</guid> <description><![CDATA[Bla blabla blablabla bla blabla blablabla]]></description> </item> <item> <title>Noch so ein Bericht</title> <link>http://example.org/index.php?page=115</link> <pubDate>Fri, 04 Apr 2013 16:21:47 +0000</pubDate> <keywrd><![CDATA[Berichte]]></keywrd> <keywrd><![CDATA[Unbekannt]]></keywrd> <keywrd><![CDATA[Allgemein]]></keywrd> <keywrd><![CDATA[Laberzeug]]></keywrd> <guid>115</guid> <description><![CDATA[Blubber blubb blubbblubb blubb blubber blubb]]></description> </item> <item> <title>Noch Mehr davon</title> <link>http://example.org/index.php?page=114</link> <pubDate>Fri, 04 Apr 2013 15:31:42 +0000</pubDate> <category><![CDATA[Ganz Alleine]]></category> <guid>114</guid> <description><![CDATA[Lalelu lalla la lalelu la lalala Lalelu la]]></description> </item> </channel> </rss>
(2) Der PHP-Code (Workaround)
<?php // ------------------------------------------------------- header("Content-Type: text/html; charset=utf-8"); // ------------------------------------------------------- $sourceurl = 'test1.rss'; $xmlobject = simplexml_load_file($sourceurl, 'SimpleXMLElement', LIBXML_NOCDATA); $resultarr = array(); // ------------------------------------------------------- $i=0; foreach ($xmlobject->channel->item as $item) { foreach ($item as $key => $val) { if (isset($resultarr[$i][$key]) && !is_array($resultarr[$i][$key])) { $subarr = array(); foreach($item->$key as $subval) { $subarr[] = (string)$subval; } $resultarr[$i][$key] = (array)$subarr; } else { $resultarr[$i][$key] = (string)$val; } } $i++; } // ------------------------------------------------------- print "<br />\n"; print "<br />\n"; print "<br /> --------- DEBUG --- \$resultarr --------- \n"; print "<br />\n"; print "<br />\n"; print "<pre style=\"background:#DEDEDE;\">\n"; print_r($resultarr); print "</pre>\n"; print "<br />\n"; print "<br />\n"; print "<br />\n"; // ------------------------------------------------------- ?>
(3) Die Ausgabe --------- DEBUG --- $resultarr ---------
Array ( [0] => Array ( [title] => Irgend ein Artikel [link] => http://example.org/index.php?page=116 [pubDate] => Fri, 05 Apr 2013 11:51:37 +0000 [category] => Array ( [0] => Artikel [1] => Internet [2] => Sonstiges [3] => Lesestoff ) [guid] => 116 [description] => Bla blabla blablabla bla blabla blablabla ) [1] => Array ( [title] => Noch so ein Bericht [link] => http://example.org/index.php?page=115 [pubDate] => Fri, 04 Apr 2013 16:21:47 +0000 [keywrd] => Array ( [0] => Berichte [1] => Unbekannt [2] => Allgemein [3] => Laberzeug ) [guid] => 115 [description] => Blubber blubb blubbblubb blubb blubber blubb ) [2] => Array ( [title] => Noch Mehr davon [link] => http://example.org/index.php?page=114 [pubDate] => Fri, 04 Apr 2013 15:32:42 +0000 [category] => Ganz Alleine [guid] => 114 [description] => Lalelu lalla la lalelu la lalala Lalelu la ) )
sieht doch ganz gut aus ... :=) ...
das $resultarr liefert die Mehrfach-Elemente als Array, wie gewünscht
und wenn doch nur einzeln, dann direkt als String (siehe $resultarr[2] )
-
in: Verzeichnis-Struktur in Array ablegen ?
geschrieben von incdesign
Hallo
Ich habe eine Verzeichnis-Struktur wie z.B:
(Order gekennzeichnet durch » davor)
» / _old_index.html dirinfo1.php index.php test1.php » testdir1/ test2.php test3.php » testdir2/ test4.php » testdir4/ test6.php test7.php » testdir3/ test5.php ...
jetzt möchte ich diese Struktur in ein multidimensionales Array ablegen
also so, dass wenn Ordner, dann dessen Inhalte als Sub-Array
ich habe eine Funktion, die mir zwar die Verzeichnis-Struktur einliest,
aber nur in ein ein-dimensionales Array mit key = vollständiger Verzeichnis-Pfad
<?php // -------------------------------------------------- function listFolder($dir, $level=1, $dirdata=array()) { $exclude = array('.htaccess', 'geheim.php'); $ffsx = scandir($dir); foreach($ffsx as $ff){ if(is_array($exclude) and !in_array($ff,$exclude)){ if($ff != '.' && $ff != '..') { if(!is_dir($dir.'/'.$ff)){ $godir = ltrim($dir,'./'); if ($level == 1) { $dirdata['home'][] = $godir.'/'.$ff; } else { $dirdata[$godir][] = $godir.'/'.$ff; } } else { $level++; $dirdata = listFolder($dir.'/'.$ff, $level, $dirdata); $level--; } } } } return $dirdata; } // -------------------------------------------------- $path = '.'; $dirinfo = listFolder($path); // -------------------------------------------------- print "<pre style=\"margin:4px; padding:6px; background:#DEDEDE; text-align:left;\">\n"; print_r($dirinfo); print "</pre>\n"; // -------------------------------------------------- ?>
die Ausgabe davon ist:
Array ( [home] => Array ( [0] => /_old_index.html [1] => /dirinfo1.php [2] => /index.php [3] => /test1.php ) [testdir1] => Array ( [0] => testdir1/test2.php [1] => testdir1/test3.php ) [testdir1/testdir2] => Array ( [0] => testdir1/testdir2/test4.php ) [testdir1/testdir2/testdir4] => Array ( [0] => testdir1/testdir2/testdir4/test6.php [1] => testdir1/testdir2/testdir4/test7.php ) [testdir3] => Array ( [0] => testdir3/test5.php ) )
ich hätte aber gerne ein mehrdimensionales Array, das die Struktur in den Array-Ebenen abbildet,
ich komme aber nicht drauf, wie ich das machen soll ...
... irgendwie mit
... Struktur aufdröseln, ... aber dann ?!?$dirparts = explode('/',$godir);
Das Ergebnis soll in Etwa so aussehen:
Array ( [home] => Array ( [0] => _old_index.html [1] => dirinfo1.php [2] => index.php [3] => test1.php [testdir1] => Array ( [0] => test2.php [1] => test3.php [testdir2] => Array ( [0] => test4.php [testdir4] => Array ( [0] => test6.php [1] => test7.php ) ) ) [testdir3] => Array ( [0] => test5.php ) ) )
so oder auch ähnlich,
hauptsache die Struktur der Verzeichnisse wird im Array als Ebenen abgebildet.
ich hoffe da kann mir jemand dabei helfen,
wie ich aus der Verzeichnis-Struktur ein multidimensionalen Array erstellen kann ... ?
Danke!