Получение текущих настроек из файла - Дизайн и модификация Invision Power Board

Перейти к содержимому

 

СвернутьПрикрепленные теги

Теги не найдены

Страница 1 из 1
  • Вы не можете создавать новые темы
  • Вы не можете отвечать в этой теме

Получение текущих настроек из файла

#1 Пользователь не на сайте   TemKa_SD ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 622
  • Регистрация: 16-Январь 18
  • Репутация: 7
  • Откуда:Спасск-Дальний
  • IPB version:4.1.x
 

Отправлено 10 Май 2019 - 22:08

Здравствуйте, я хочу переписать тут функцию получения настроек, сейчас оно реализовано чужим кодом:

		if ( isset( $this->botID ) and file_exists( \IPS\wc3\Bot::BOT_PATH . $this->botID . '/gcb/gcb.cfg' ) ) {
			$fh = fopen( \IPS\wc3\Bot::BOT_PATH . $this->botID . '/gcb/' . "gcb.cfg", 'r');

			while(($buffer = fgets($fh, 4096)) !== false) {
				$buffer = trim($buffer);

				if(mb_strlen($buffer) > 3 && $buffer[0] != '#') {
					$index = mb_strpos($buffer, " =");

					if($index !== false) {
						$key = trim(mb_substr($buffer, 0, $index));
						$val = "";

						if(mb_strlen($buffer) > $index + 3) {
							$val = trim(mb_substr($buffer, $index + 3));
						}

						if(isset($key)) {
							$config[$key] = $val;
						}
					}
				}
			}

			fclose($fh);
		}



Оно в принципе работает, но много строк, мне так не нравится.


file_get_contents я думаю нет смысла использовать, чтение в строку мне не надо, нужен массив.

$file = file(\IPS\wc3\Bot::BOT_PATH . $this->botID . '/gcb/gcb.cfg');


Сейчас мне нужно разделить массив на ключ => значение, есть разделитель в файле '=': http://prntscr.com/nmytio



foreach ($file as $key) {
	$skey = trim(mb_substr($key, 0, mb_strpos($key, " =")));
	$svalue = trim(mb_substr($key, mb_strpos($key, " =")));
	$settings[$skey] = $svalue;
}



Что скажите? какой код лучше использовать? http://prntscr.com/nmyz9w

Сообщение изменено: TemKa_SD (10 Май 2019 - 22:09)

0

#2 Пользователь не на сайте   TemKa_SD ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 622
  • Регистрация: 16-Январь 18
  • Репутация: 7
  • Откуда:Спасск-Дальний
  • IPB version:4.1.x
 

Отправлено 10 Май 2019 - 22:26

Мне нужно комнаты поместить в массив 2 уровня, не получается, только одна комната заходит:

$settings = array();
foreach ($file as $key) {
	$skey = trim(mb_substr($key, 0, mb_strpos($key, " =")));
	$svalue = str_replace('= ', '', trim(mb_substr($key, mb_strpos($key, " ="))));
		if (static::garenaConfigurationConnectionKey($skey)) {
			$settings['rooms'] = [$svalue];
		}
		else {
			$settings[$skey] = $svalue;
		}
}

0

#3 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 9 477
  • Регистрация: 20-Март 09
  • Репутация: 2 554
  • IPB version:3.1.x
 

Отправлено 10 Май 2019 - 23:58

У вас темы в последние время скатываются кудато от вопросов про IPS в сторону общего программирования.
Создайте что-ли одну темы про разные вопросы программирования в разделе не относящее к делу если вопросы не касаются конкретно кода IPS.

Често говоря не понимаю зачем тут строковые функции, когда можно разбить на key => value через функцию explode.

foreach( $file as $row )
{
    $bits = array_map( "trim", explode( "=", $row, 2 ) );
    $settings[ $bits[0] ] = $bits[1];
}

0

#4 Пользователь не на сайте   TemKa_SD ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 622
  • Регистрация: 16-Январь 18
  • Репутация: 7
  • Откуда:Спасск-Дальний
  • IPB version:4.1.x
 

Отправлено 11 Май 2019 - 07:02

Да, спасибо, это то что нужно. Я пробовал через explode, но не сообразил как разбить на key => value.
На счет тем, да, понял, это общая тема по php, в следующий раз учту при создании.

P.S.: Не получается еще комнаты в массив перевести: до http://prntscr.com/nn3at4 после http://prntscr.com/nn3b7e

foreach( $file as $row )
{
    $bits = array_map( "trim", explode( "=", $row, 2 ) );
	if ( static::garenaConfigurationConnectionKey($bits[0])['key'] == "roomname" ) {
		$settings['rooms'] = [$bits[1]];
	}
	else {
		$settings[$bits[0]] = $bits[1];
	}
}


Одна комната остается. Я так понимаю, тут цикл нужен?

Сообщение изменено: TemKa_SD (11 Май 2019 - 07:02)

0

#5 Пользователь не на сайте   newbie ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins.ru Team
  • Сообщений: 4 056
  • Регистрация: 26-Октябрь 11
  • Репутация: 1 590
  • IPB version:I have no IPB
 

Отправлено 11 Май 2019 - 08:02

Просмотреть сообщениеTemKa_SD сказал(а):

Не получается еще комнаты в массив перевести: до http://prntscr.com/nn3at4 после http://prntscr.com/nn3b7e

Потому что у Вас
$settings['rooms'] = [$bits[1]];
И с каждым разом значение $settings['rooms'] перезаписывается. Если там должен быть массив, то и создавайте массив
$settings['rooms'][] = [$bits[1]];

1

#6 Пользователь не на сайте   TemKa_SD ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 622
  • Регистрация: 16-Январь 18
  • Репутация: 7
  • Откуда:Спасск-Дальний
  • IPB version:4.1.x
 

Отправлено 11 Май 2019 - 08:32

Спасибо, я пробовал так, что-то не получалось...
0

#7 Пользователь не на сайте   TemKa_SD ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 622
  • Регистрация: 16-Январь 18
  • Репутация: 7
  • Откуда:Спасск-Дальний
  • IPB version:4.1.x
 

Отправлено 11 Май 2019 - 12:12

Как сделать, чтобы массив начинался с 1 а не 0 ?
0

#8 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 9 477
  • Регистрация: 20-Март 09
  • Репутация: 2 554
  • IPB version:3.1.x
 

Отправлено 11 Май 2019 - 12:19

А смысл?
Использовать переменную счетчик $key с начальном значением 1. Или при присвоение первому элементу в массиве задать ключ 1.
0

#9 Пользователь не на сайте   TemKa_SD ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 622
  • Регистрация: 16-Январь 18
  • Репутация: 7
  • Откуда:Спасск-Дальний
  • IPB version:4.1.x
 

Отправлено 11 Май 2019 - 14:35

Да, сделал чуток по другому )
0

#10 Пользователь не на сайте   TemKa_SD ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 622
  • Регистрация: 16-Январь 18
  • Репутация: 7
  • Откуда:Спасск-Дальний
  • IPB version:4.1.x
 

Отправлено 11 Май 2019 - 19:54

Я вне формы передаю стандартные значения, указал true, записалось как 1. Мне нужно именно true, как иправить

в '' вроде работает.

Сообщение изменено: siv1987 (11 Май 2019 - 21:03)

0

#11 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 9 477
  • Регистрация: 20-Март 09
  • Репутация: 2 554
  • IPB version:3.1.x
 

Отправлено 11 Май 2019 - 21:05

TemKa_SD, на какой хрен вы две строчки кода грузите скриншотами? Всю текстовую информацию пишите в теме обрамляя в ббкоды. Не нужно засорять форум этими скриншотами.
0

#12 Пользователь не на сайте   TemKa_SD ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 622
  • Регистрация: 16-Январь 18
  • Репутация: 7
  • Откуда:Спасск-Дальний
  • IPB version:4.1.x
 

Отправлено 11 Май 2019 - 21:24

Мне казалось скринами понятней, и можно заскринить не только ту часть когда о которой идет речь, но и остальное.
0

Сообщить об этой теме:


Страница 1 из 1
  • Вы не можете создавать новые темы
  • Вы не можете отвечать в этой теме

1 пользователей читают эту тему
0 зарегистрированных, 1 гостей, 0 скрытых


Контактная информация

Вопросы по работе сайта

+7 (917) 501-4765
C 10 до 20 в рабочие дни (время московское)

Техническая поддержка

Контактные данные специалистов

Дизайн форумов

IPB 3.x ¦ IPB 2.x

Бесплатные шаблоны

IPB 3.2 – 3.4 ¦ IPB 3.1 ¦ IPB 3.0 ¦ IPB 2.2 – 2.3 ¦ IPB 2.1 ¦ Клипарт
Лицензия на использование ¦ Ваша поддержка ¦ О проекте
Copyright © 2005-2019 IPBSkins.ru Team
При копировании материалов с сайта
прямая ссылка на источник обязательна