| 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: 10 let
|
|||
0