Autor | Zpráva | ||
---|---|---|---|
xaverista Profil |
#1 · Zasláno: 2. 2. 2016, 20:29:31
Zdravím,
pomohl by mi prosím někdo? Mám soubor, kde si pomocí webu chci upravovat určité řádky (pomocí formuláře s inputy) ip=127.0.0.1 port=8080 name=example level=easy a pomocí formuláře chci upravit pouze např. pouze hodnotu u ip a name... Jak na to? PS každá hodnota je na novém řádku viz. příklad Děkuji xaverista |
||
Dan Charousek Profil |
Něco takového by mohlo fungovat:
// klíč který chceš změnit (třeba z formuláře) $key_to_change = "name"; // hodnota, na kterou chceš měněný klíč změnit $value_to_set = "new_example"; // název souboru $file_name = "soubor.txt"; $file = file_get_contents($file_name); $lines = explode("\n", $soubor); $new_file_lines = []; foreach($lines as $line) { if(empty(trim($line))) continue; list($key, $value) = explode("=", $line); $new_file_lines[] = $key . "=" . ($key == $key_to_change ? $value_to_set : $value); } file_put_contents($file_name, implode("\n", $new_file_lines)); |
||
Taps Profil |
#3 · Zasláno: 2. 2. 2016, 21:02:48
Dan Charousek:
Nebylo by jednodušší použít funkci file? |
||
abc Profil |
#4 · Zasláno: 2. 2. 2016, 22:26:47
Pokud by to bylo možné, doporučil bych změnit formát souboru na ini nebo neon nebo yaml nebo tak něco, co má napsané parsery a dá se s tím snadno pracovat.
|
||
xaverista Profil |
#5 · Zasláno: 2. 2. 2016, 23:35:34
abc:
„Pokud by to bylo možné, doporučil bych změnit formát souboru“ To právě že možné není... Taktéž potřebuji nastavovat více hodnot najednou... A cyklit ten foreach mi přijde blbost... |
||
Dan Charousek Profil |
#6 · Zasláno: 3. 2. 2016, 00:02:50
xaverista:
„Taktéž potřebuji nastavovat více hodnot najednou... A cyklit ten foreach mi přijde blbost...“ Ta změna není tak komplikovaná, mohl jsi to zkusit :) // klíč který chceš změnit (třeba z formuláře) $changes = [ "ip" => "localhost", "port" => "8000" ]; // název souboru $file_name = "soubor.txt"; // můžeš i použít file() jak radí Taps $file = file_get_contents($file_name); $lines = explode("\n", $soubor); $new_file_lines = []; foreach($lines as $line) { if(empty(trim($line))) continue; list($key, $value) = explode("=", $line); $new_file_lines[] = $key . "=" . (isset($changes[$key]) ? $changes[$key] : $value); } file_put_contents($file_name, implode("\n", $new_file_lines)); |
||
xaverista Profil |
#7 · Zasláno: 3. 2. 2016, 07:21:25
Dan Charousek:
Aha :-) super, moc děkuji |
||
Časová prodleva: 9 let
|
0