PHP регулярное выражение, чтобы получить IP-адрес от / etc / hosts
Вопрос
Я пишу скрипт PHP, который автоконфигурирует устройство по поводу Telnet, и мне нужно схватить некоторые IP-адреса из / etc / hosts
Мне нужно, чтобы он использовал только IP-адрес, и назначить его переменной на основе имени хостов. Пример:
192.168.1.50 machine
192.168.1.51 printer
192.168.1.52 sigpad
Сценарий PHP должен быть таким:
$machineip = "192.168.1.50";
$printerip = "192.168.1.51";
$sigpadip = "192.168.1.52";
Конечно, мой /etc/hosts
Файл отличается, но вы получите идею из моего примера. Затем я смогу включить этот сценарий PHP в любую из наших существующих программ и использую переменные вместо жесткокодируемых IP-адресов.
Решение
function ipFromEtcHosts($host) {
foreach (new SplFileObject('/etc/hosts') as $line) {
$d = preg_split('/\s/', $line, -1, PREG_SPLIT_NO_EMPTY);
if (empty($d) || substr(reset($d), 0, 1) == "#")
continue;
$ip = array_shift($d);
$hosts = array_map('strtolower', $d);
if (in_array(strtolower($host), $hosts))
return $ip;
}
}
Пример:
echo ipFromEtcHosts('ip6-mcastprefix');
дает ff00::0
.
Не связан с StackOverflow