Timeticks: (455215351) 52 days, 16:29:13.51 есть данные получаемые от оборудования, как спарсить чтоб оставалось 52 . при чём значения будут меняться (455363270) 53 days, 16:53:52.70
@Kvandaik, то есть, необходимо количество дней? Например, при помощи регулярных выражений (preg_match_all()) по шаблону '/(\d+)(?=\sdays)/'
$str="Timeticks: (455215351) 52 days, 16:29:13.51"; preg_match_all("/(\d+)(?=\sdays)/", $str, $matches); print_r($matches); Array ( [0] => Array ( [0] => 52 ) [1] => Array ( [0] => 52 ) ) в массив как то бы не хорошо загонять, т.к у меня ответ от оборудования по разным запросом в цикле выходит и там уже я использую последовательно str_replace("INTEGER:","",$otvet); как выйти из ситуации?
PHP: <?php $str = "Timeticks: (455215351) 52 days, 16:29:13.51"; $start = strpos($str, ")") + 1; $end = strpos($str, "days"); $length = $end - $start; $result = trim(substr($str, $start, $length)); echo $result; ?>
@Kvandaik, ломаем систему Генезиса PHP: <?php echo (int)'52 days, 16:29:13.51'; --- Добавлено --- cyка "Timeticks: (455215351) 52 days, 16:29:13.51"; --- Добавлено --- PHP: echo explode ( ' ', 'Timeticks: (455215351) 52 days, 16:29:13.51' )[2]; --- Добавлено --- PHP: echo (int) explode ( ')', 'Timeticks: (455215351) 52 days, 16:29:13.51' )[1];
$tuarray=array('INTEGER: 22','STRING: 10','Timeticks: (455215351) 542 days, 16:29:13.51'); foreach ($tuarray as $key => $value) { $value=str_replace("INTEGER:","", $value); $value=str_replace("STRING:","", $value); $start = strpos($value, ")") + 1; $end = strpos($value, "days"); //echo $end; $length = $end - $start; $result = trim(substr($value, $start, $length)); echo '<pre>'.$key.'-- '; echo $result; } ОТВЕТ 0-- 2 1-- 1 2-- 542 а надо чтоб оставалось 22 10 542
зафиг ты трогаешь остальные значения массива, используешь цикл, после тупейшую реализацию с ненужными данными совершаешь ??? --- Добавлено --- Это называется смотрит в книгу - видит фигу.
Ты определись, что тебе нужно. Ибо в первом посте ты пишешь что нужно спарсить 52 (как я понимаю тебе нужно выдернуть именно то число которое стоит перед словом days) А тут у тебя уже не строка, как это было показано изначально, а массив. Ты напиши исходные данные и что нужно получить в результате --- Добавлено --- Он выше что-то про массивы писал в негативном ключе, поэтому explode() я так понял ему не подходит, а так конечно через explode() самая короткая реализация.
из sql $tsql= while { $urls=$row[ip] $oid=array("1.1.1.1","1.2.3.3","1.2.3.4.5"); foreach($oid=>$oids) { будет так $dats=snmp_real_walk($urls,login,pass, $oids) foreach($dats=>$prm) вот и пошли по порядку значение опроса оборудования. INTEGER: 22 STRING 10 Timeticks: (455215351) 542 days, 16:29:13.51 их и парсить надо потом exec.dbo в базу поедут @args