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