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
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 *
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
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 *
Majkl578:
Presne toto potrebujem! Ďakujem mnohokrát.
mjamrich
Profil *
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.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0