Autor | Zpráva | ||
---|---|---|---|
bagocina Profil |
#1 · Zasláno: 1. 2. 2012, 19:42:55
Ahojte.
Potreboval by som čo najľahšie vytvoriť PHP funkciu, ktorá z konfiguračného súboru vyhľadá zadané výrazy podľa podmienky a následne ich zmení za dodané premenné. Príklad konfiguračného súboru: sv_password "" hostname "nazov" rcon_password "heslo" sys_ticrate "10000" sv_maxupdaterate "101" sv_minupdaterate "100" sv_maxrate "25000" sv_minrate "2500" mp_autokick "0" Funkcia má vyhľadať napr. hostname, rcon_password, sv_password a ak sú dodané premenné tak zmeniť text medzi " ". Skúšal som rôznym spôsobom vyhľadať tieto riadky pomocou preg_match_all('/hostname \"(.*)\"/Us',$text,$match); foreach($match[1] as $nazov) { $nazov_vypis = $nazov; } preg_match_all('/sv_password \"(.*)\"/Us',$text,$match); foreach($match[1] as $sv_password) { $sv_password_vypis = $sv_password; } preg_match_all('/rcon_password \"(.*)\"/Us',$text,$match); foreach($match[1] as $heslo) { $heslo_vypis = $heslo; } a nasledne ich upraviť cez $najst=array ( "hostname \"$nazov_vypis\"", "rcon_password \"$heslo_vypis\"" ); $nahradit=array ( "hostname \"$csko_name\"", "rcon_password \"\"" ); $vystup=str_replace($najst, $nahradit, $text); no potreboval by som to čo najjednoduchšie spojiť do jednej funkcie aby sa jednoducho dali pridávať a vymazávať dané údaje, ktoré sa majú v konfiguračnom súbore meniť. Ďakujem vopred za pomoc. |
||
abc Profil |
bagocina:
Ahoj, staci pouzit parse_ini_file(), která ti načte konf. soubor do pole a tam už si vyhledáš podle indexu, změníš a vrátíš zpět... |
||
bagocina Profil |
#3 · Zasláno: 1. 2. 2012, 20:31:13
abc:
Funkcia parse_ini_file() bohužiaľ nevie prečítať konfiguračný súbor, ktorého príklad som uviedol vyššie. Potrebujem aby to vedelo v hocijakom texte vedelo vyhľadať a zmeniť určitú časť, keďže nie všetky konfiguračné súbory sú rovnaké ho typu a majú rovnaký obsah. |
||
Alphard Profil |
#4 · Zasláno: 1. 2. 2012, 20:56:13
Přímé nahrazení bude komplikované, parsujte ten konfigurák do asociativního pole a pak ním pracujte.
Pro úpravách se snad vygeneruje nový soubor, který přepíše ten starý. |
||
bagocina Profil |
#5 · Zasláno: 1. 2. 2012, 21:03:53
Alphard
Nejaká menšia rada ako na to, pretože s kódom ktorý som pozliepal a spravil, sa už ďalej neviem pohnúť ďalej a iný spôsob mi nevie už vôbec napadnúť. Ďakujem |
||
Alphard Profil |
<?php $config = array(); foreach (file('config.conf') as $rule) { list($name, $value) = explode(' ', $rule); $config[trim($name)] = trim(trim($value), '"\''); } print_r($config); Kdyby snad nějaký řetězec začínal nebo končil apostrofem nebo uvozovkou, byl by to problém, kdyžtak si to upravte. |
||
Keeehi Profil |
// $data - řetězec načtený ze souboru preg_match_all('~(.*) "(.*)"~',$data,$matches,PREG_SET_ORDER); $conf = array(); foreach($matches as $match) $conf[$match[1]] = $match[2]; // práce s honotami // $conf["hostname"] = "neco jiného" // konec práce $out = ""; foreach($conf as $key => $value){ $out .= "$key \"$value\"\n"; } // $out - řetězec pro uložení do souboru |
||
bagocina Profil |
#8 · Zasláno: 1. 2. 2012, 21:26:58
Alphard, Keeehi:
Ďakujem vám veľmi pekne za váš čas a poskytnuté kódy. Presne toto som potreboval. Ešte raz ďakujem. |
||
Časová prodleva: 13 let
|
0