Do 16. června do 19:00 běží na Steamu přehlídka nadcházejících her Festival Steam Next | červen 2025 doplněná demoverzemi, přenosy a dalšími aktivitami. Demoverze lze hrát zdarma.
Apple na své vývojářské konferenci WWDC25 (Worldwide Developers Conference, keynote) představil řadu novinek: designový materiál Liquid Glass, iOS 26, iPadOS 26, macOS Tahoe 26, watchOS 26, visionOS 26, tvOS 26, nové funkce Apple Intelligence, …
Organizátoři konference LinuxDays 2025, jež proběhne o víkendu 4. a 5. října 2025 v Praze na FIT ČVUT, spustili přihlašování přednášek (do 31. srpna) a sběr námětů na zlepšení.
Po roce byla vydána nová stabilní verze 25.6.0 svobodného multiplatformního multimediálního přehrávače SMPlayer (Wikipedie).
DNS4EU, tj. evropská infrastruktura služeb DNS založená na vysoce federovaném a distribuovaném ochranném ekosystému, byla spuštěna v testovacím režimu [𝕏]. Na výběr je 5 možností filtrování DNS.
Skriptovací programovací jazyk PHP (PHP: Hypertext Preprocessor, původně Personal Home Page) dnes slaví 30 let. Přesně před třiceti lety, 8. června 1995, oznámil Rasmus Lerdorf vydání PHP Tools (Personal Home Page Tools) verze 1.0.
Ve středu v 17:00 byl ve Francii zablokován přístup k PornHubu a dalším webům pro dospělé. K 17:30 došlo k nárůstu počtu registrací Proton VPN o 1 000 % [𝕏]. Dle nového francouzského zákona jsou provozovatelé těchto webů povinni ověřovat věk uživatelů prostřednictvím průkazu totožnosti nebo platební karty.
Před 32 lety, 6. června 1993, byl spuštěn první český WWW server (ještě pod TLD .cs), pro potřeby fyziků zabývajících se problematikou vysokých energií.
Střílečku Borderlands 2 lze v rámci výprodeje série Borderlands na Steamu získat zdarma napořád, když aktivaci provedete do 8. června 19:00.
Byla vydána nová verze 2.22 svobodného video editoru Flowblade (GitHub, Wikipedie). Přehled novinek v poznámkách k vydání. Videoukázky funkcí Flowblade na Vimeu. Instalovat lze také z Flathubu.
Již delší dobu jsem nic nenapsal o mých zkušenostech s PHP. Jak je z nadpisu partné zkoušel jsem parsování XML v PHP, ale nějak mi to nevychází.
Na parsování jsem si vytvořil jednoduchý soubor XML:
<?xml version="1.0" encoding="UTF-8"?> <apcpinstall> <type>component</type> <name>test</name> <author>Filip Bartmann</author> <e-mail>xxx@yyy.info</e-mail> <license>GNU-GPL</license> <sql type="install">CREATE TABLE #__test (test_id int(5) NOT NULL auto_increment, test_name mediumtext NOT NULL, PRIMARY KEY(test_id))</sql> <sql type="uninstall">DROP TABLE #_test</sql> <files> <file id="main">test.php</file> <file id="menu">menu.php</file> <file id="lang">cs_CZ.utf8</file> <file id="lang">en_GB.utf8</file> </files> </apcpinstall>
Kód pársuji pomocí této třídy:
class xmlparse { public $langs=Array(); function begin($parser, $name, $attr) { $this->xml = $name; $this->attr = $attr; $this->pd = 0; } function stop($parser, $name) { if ($name == "apcpinstall") { switch ($this->type) { case "component": $sql = "INSERT INTO #__components SET comp_name=\"".$this->name."\", comp_url=\"com=".$this->name."\", comp_include=\"".$this->name."/".$this->main."\", comp_menu=\"".$this->name."/".$this->menu."\",core=0"; //dbcon($sql); break; default: break; } } } function data($parser, $data) { if ($this->pd == 0) { echo $this->xml." ".$data."<br>"; switch ($this->xml) { case "type" : if ($data == "component") { $this->type = "component"; } break; case "name" : $this->name = $data; case "sql" : if (isset ($this->attr["type"])) { if ($this->attr["type"] == "install") { //dbcon($data); } } break; case "file" : switch ($this->attr["id"]) { case "main" : $this->main = $data; break; case "menu" : $this->menu = $data; case "lang" : array_push($this->langs,$data); default : break; } break; default : break; } $this->pd++; } } function parse($cname) { global $basePath; $this->parser = xml_parser_create(); xml_parser_set_option($this->parser, XML_OPTION_CASE_FOLDING, 0); xml_set_object($this->parser, $this); xml_set_element_handler($this->parser, "begin", "stop"); xml_set_character_data_handler($this->parser, "data"); if (file_exists($basePath.'/tmp/install/'.basename($_FILES["comp"]["tmp_name"]).'/'.$cname.'/install.xml')) { $xmlfile = fopen($basePath.'/tmp/install/'.basename($_FILES["comp"]["tmp_name"]).'/'.$cname.'/install.xml', "r"); if (!$xmlfile) { echo "Soubor install.xml se nepodařilo otevřít<br/>"; return 0; } else { while ($xmldata = fread($xmlfile, filesize($basePath.'/tmp/install/'.basename($_FILES["comp"]["tmp_name"]).'/'.$cname.'/install.xml'))) { xml_parse($this->parser, $xmldata); } xml_parser_free($this->parser); $files=Array($this->main, $this->menu, $this->langs); return $files; } } else { echo "Soubor install.xml neexistuje<br>"; return 0; } } }
Když si dám hodnoty vytisknout pomocí řádku zvýrazněného kurzívou zobrazí se mi toto:
apcpinstall type component type name test name author Filip Bartmann author e-mail xxx@yyy.info e-mail license GNU-GPL license sql CREATE TABLE #__test (test_id int(5) NOT NULL auto_increment, test_name mediumtext NOT NULL, PRIMARY KEY(test_id)) sql sql DROP TABLE #_test sql files file test.php file file menu.php file file cs_CZ.utf8 file file en_GB.utf8 file file
A tady je ten problém. Nemůžu zjistit proč se mi zdvojují ty otevírací tagy, tedy proč tam mám jednou type component a podruhé samotné type? Provizorně jsem to vyřešil pomocí řádků zvýrazněných tučně, ale vím, že je to špatné řešení a také bych se to docela rád naučil správně.
Druhý problém je, proč se mi v poli files v podpoli langs objevuju menu.php, když ho tam vůbec nedávám:
Array ( [0] => test.php [1] => menu.php [2] => Array ( [0] => menu.php [1] => cs_CZ.utf8 [2] => en_GB.utf8 ) )
Nemůžu přijít na to, kde mám chybu. Mohl byste mi někdo poradit co dělám špatně? Předem děkuji.
Tiskni
Sdílej:
Teď jsem to už přepsal s pomocí SimpleXML pro PHP5 a ještě potřebuji něco pro PHP4.A proc? To je dneska takovy problem sehnat hosting pro PHP5? Kdyz se budeme neustale ohlizet na PHP4, jen to bude oddalovat jeho definitivni smrt, ke ktere je urceno.