Соединить данные при обработке через implode?

devs

Новичок
Добрый день.
У меня есть строка такого вида

notes latlng 123456789


Обрабатываю так

if (($option == "notes") && (preg_match("/latlng/",$value))) {
$value = explode(" ",$value);
$value = $value[1];
$value = trim($value);
$option = "latlng";

};


хочу склеять при обработке notes и latlng чтобы получилось notes_latlng 123456789

Смотрю в доках склеивать можно через implode но, у меня не получается применить это в данной конструкции. Прошу помощи
 
Последнее редактирование:

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Откуда строк такого вида берешь?
 

devs

Новичок
у меня есть файл с таким содержимым


Код:
define host {
  host_name  test
  alias  test
  display_name  test
  address  192.168.180.91
  parents  sw-test-01
  use  generic-switch
  initial_state  o
  active_checks_enabled  1
  check_period  24x7
  flap_detection_enabled  1
  register  1
  notes latlng  1234567
}

nates latlnt это координаты которые потом выводит на карту, я хочу заменить notes latlng на notes_latlng

это часть обрабатывает без _
Код:
if (($option == "notes") && (preg_match("/latlng/",$value))) {
$value = explode(" ",$value);
$value = $value[1];
$value = trim($value);
$option = "latlng";
};
мне нужно добавить чтобы оно склеяло
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Повторяю свой вопрос, как данные ты берешь?

Какие у тебя переменные есть, кроме $option == "notes"? Если у тебя файл, что ты привел - читается построчно, тогда все просто. Если нет - чуть сложнее, но не намного.

В любом случае идем в мануал, заменяем preg_match на что-то вроде http://php.net/manual/ru/function.strstr.php

Далее если ты хочешь получить данные в виде xxx_yyy, надо написать код, который склеит тебе 2 переменных и знак _. Делается это так $someVar = $xxx . '_' . $yyy;
 

WMix

герр M:)ller
Партнер клуба
PHP:
$subject = 'notes    latlng  1234567';

echo preg_replace(
    '~(notes[ \t]+latlng)[ \t]+(\d+)~ui',
    'notes_latlng ${2}',
    $subject
);
 

dev

Новичок
весь файл маркера
PHP:
// Read all Nagios configuration files into one huge array
foreach ($files as $file) {
  $raw_data[$file] = file($file);
}

include("status.php");

//pre-define variables so the E_NOTICES do not show in webserver logs
$javascript = "";

$s = nagmap_status();
$info_msg['status'] = $s;

$i=0;
foreach ($raw_data as $file) {
foreach ($file as $line) {
  //remove blank spaces
  $line = trim($line);
  if ($line && !preg_match("/^;/", $line) && !preg_match("/^#/", $line)) {
    //replace many spaces with just one (or tab to one space)
    $line = preg_replace('/\s+/', ' ', $line);
    $line = preg_replace('/\t+/', ' ', $line);
    if ((preg_match("/^define host{/", $line)) OR (preg_match("/^define host {/", $line)) OR (preg_match("/^define hostextinfo {/", $line)) OR (preg_match("/^define hostextinfo{
/", $line))) {
      //starting a new host definition
      $i++;
    } elseif (!preg_match("/}/",$line)) {
      //split line to options and values
      $pieces = explode(" ", $line, 2);
      //get rid of meaningless splits
      if (count($pieces)<2) { continue; };
      $option = trim($pieces[0]);
      $value = trim($pieces[1]);
      //remove comments from this line
      $value_comm = explode(';', $value);
      $data[$i][$option] = $value_comm[0];
    }
  }
}
}
unset($i);

//hosts definition
foreach ($data as $host) {
  if (!empty($host["host_name"])) {
    $nagios_host_name = $host["host_name"];
    $hostname = trim($host["host_name"]);
    $hostname = str_replace('-','_',$hostname);
    $hostname = str_replace('.','_',$hostname);
    $hostname = str_replace('/','_',$hostname);
    $hostname = str_replace('(','_',$hostname);
    $hostname = str_replace(')','_',$hostname);
    $hostname = str_replace(' ','_',$hostname);
  }
  //if hostname is empty or hostname starts with exclamation mark, ignore this host
  if (empty($hostname) OR (preg_match("/^\\!/", $hostname)) ) {
    continue;
  };
  $hostname = "x".$hostname."x";
  $host["host_name"] = $hostname;

  foreach ($host as $option => $value) {
    if ($option == "parents") {
      $value = trim($value);
      $value = str_replace('-','_',$value);
      $value = str_replace('.','_',$value);
      $value = str_replace('/','_',$value);
      $value = str_replace('(','_',$value);
      $value = str_replace(')','_',$value);
      $parents = explode(',', $value);
      $value = array();
      foreach ($parents as $parent) {
        $parent = trim($parent);
        $parent = str_replace(' ','_',$parent);
        $value[] = "x".$parent."x";
      }
    }
    if (($option == "notes") && (preg_match("/latlng/",$value))) {
      $value = explode(" ",$value);
      $value = $value[1];
      $value = trim($value);
      $option = "latlng";
    };
    if (($option != "latlng") && ($option != "nagios_host_name") && ($option != "parents") && (preg_match("/-/",$value))) {
      $value = str_replace('-','_',$value);
      $value = str_replace('.','_',$value);
      $value = trim($value);
    };
    $hosts[$hostname]["nagios_host_name"] = $nagios_host_name;
    $hosts[$hostname][$option] = $value;
    unset($parent, $parents);
  };
};
 
Сверху