Autor | Zpráva | ||
---|---|---|---|
mjamrich Profil * |
zdravim. mam problem s vyfiltrovanim konkretnych casti suboru. subor je linuxacky config od DHCP serveru. potreboval by som vytiahnut z neho IP adresy, masky...atd. Malo by sa to dat pomocou reg. vyrazu ereg(), ale mozno je aj nejaky iny vhodny. Viem ze treba vytvorit masku podla kt. sa bude vyhladavat, ale neviem ako. A vysledky potrebujem dalej pouzit, cize nacitat do premennych alebo pola. Prosim o modifikaciu kodu. Dakujem.
cast configu: # A slightly different configuration for an internal subnet. subnet 192.168.5.0 netmask 255.255.255.0 { range 192.168.5.34 192.168.5.35; # option domain-name-servers ns1.internal.example.org; # option domain-name "internal.example.org"; # option routers 10.5.5.1; option broadcast-address 192.168.5.255; # default-lease-time 600; # max-lease-time 7200; } mam kod zatial iba na precitanie suboru: $fileName = "dhcpd.conf"; $fileHandle = fopen("../out/$fileName", "r"); while(!feof($fileHandle)) { $out = fgets($fileHandle); } fclose($fileHandle); Moderátor Majkl578: Vkládej prosím kódy mezi značky [>pre] a [>/pre] (stačí kliknout na ).
Tvůj projev je špatně srozumitelný, piš prosím s diakritikou. |
||
Majkl578 Profil |
#2 · Zasláno: 7. 4. 2010, 13:04:17
mjamrich:
„pomocou reg. vyrazu ereg()“ Funkce z POSIX Regex (ereg a jí příbuzné) jsou od PHP 5.3 deprecated. Místo nich se používají PCRE funkce (preg_*). „Viem ze treba vytvorit masku podla kt. sa bude vyhladavat, ale neviem ako. A vysledky potrebujem dalej pouzit, cize nacitat do premennych alebo pola. Prosim o modifikaciu kodu.“ Není co modifikovat. Tvůj kód čte data ze souboru, ale nic víc. Není problém udělat to co chceš, jen zkus lépe specifikovat, co konkrétně tě zajímá (IP adres je tam více, možná že chceš všechny). |
||
mjamrich Profil * |
#3 · Zasláno: 7. 4. 2010, 13:56:47
Majkl578:
„Není co modifikovat. Tvůj kód čte data ze souboru, ale nic víc. Není problém udělat to co chceš, jen zkus lépe specifikovat, co konkrétně tě zajímá (IP adres je tam více, možná že chceš všechny).“ Asi som sa spatne vyjadril, nie modifikovat ale doplnit. Viem ze to iba cita, ale prave potrebujem tam doplnit nieco co mi vytiahne zo suboru co potrebujem. Tak napriklad z toho kusku configu co som dal na ukazku by som potreboval adresu subnetu, masku, range - obidve adresy a broadcast-address. Ide mi o precitanie configu, vytiahnutie zatial povedzme tychto udajov, zobrazenie vytiahnutych udajov. Skratka webove rozhranie na konfiguraciu DHCP. Momentalne sa snazim uzivatelovi zobrazit aktualnu konfiguraciu. |
||
Majkl578 Profil |
#4 · Zasláno: 7. 4. 2010, 14:29:55 · Upravil/a: Majkl578
Zkusil bych to čtení poněkud jednoduššeji.
$fileName = 'dhcpd.conf'; $data = file_get_contents("../out/$fileName"); preg_match('~subnet\s+(.+)\s+netmask\s+(.+)\s+\{ #podsíť a maska \s+ range\s+(.+); #rozsah \s+(?:.*?\s+)* option\s+broadcast\-address\s+(.+); #broadcast ~Umix', $data, $matches); var_dump($matches); $matches[1];//podsíť $matches[2];//maska $matches[3];//rozsah $matches[4];//broadcast |
||
mjamrich Profil * |
#5 · Zasláno: 7. 4. 2010, 15:20:21
Majkl578:
Presne toto potrebujem! Ďakujem mnohokrát. |
||
mjamrich Profil * |
#6 · Zasláno: 8. 4. 2010, 11:21:52
Majkl578:
Ešte sa mi naskytá jedna otázka. Čo v prípade ak by som potreboval vybrat viac rovnakych skupín dát? Čiže subnetov by bolo v configu viac a ja by som ich chcel vybrať všetky a vypísať ich. Dala by sa použiť funkcia preg_match_all()?? Vedel by si mi ešte s týmto pomôcť. Myslím že preg_match_all() vráti viacrozmerné pole. Ide mi hlavne o výpis tohto poľa. Chcem dosiahnuť aby vypísané dáta boli presne v tom tvare ako sú zapísané v configu. tzn. dodržané riadkovanie. Dalo by sa este zasupportovať? Dakujem. |
||
Časová prodleva: 14 let
|
0