Ru-MaNGOS

Вернуться   Ru-MaNGOS > Дополнения > WWW

Важная информация

WWW Web интерфейс для MaNGOS

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 14.03.2010, 01:10   #1
Gerald
Новичок
 
Регистрация: 07.03.2010
Сообщений: 21
Сказал(а) спасибо: 99
Поблагодарили 35 раз(а) в 6 сообщениях
Gerald На верном пути
По умолчанию [UpdateFields.h] Пример парсинга

mangos.ru
дата:18 июля 2009 г.
автор:Feuer


По просьбам трудящихся Пример парсинга UpdateFields.h, экспорт данных о полях в ini файл и работа с ним.


PHP код:
<?php
/**
 * UpdateFields.php :: Parse UpdateFields.h 
 *
 * @author Dibosh
 */

class UpdateFields {

static public function 
update(){

    
$file file_get_contents(UPDATE.'UpdateFields.h') or die();
    
$file preg_replace('/(\/.*\n)|\t|\s|\n/Uis','',$file);
                    
#enumEObjectFields{ =>
    
preg_match_all('/enumE(.*?)\;/i',$file,$Fields);
                    
# => ObjectFields
    
foreach($Fields***91;1***93; as $field){
      
      
preg_match('/^(.*){/i',$field,$name);
      
$name $name***91;1***93;;

     
preg_match('/{(.*?),}/i',$field,$field);
     
$field split(','$field***91;1***93;);
     foreach(
$field as $f){
            
preg_match('/^(.*?)=.*(0x.{4})/i',$f,$s);
            
$F_array***91;$name***93;***91;$s***91;1***93;***93; = hexdec($s***91;2***93;);
            }

        }
    
INI::save(CONFIG.'DataFields'$F_array);
}


}
?>


PHP код:
<?php
/**
 * ini.php :: Класс для работы с .ini файлами конфигурации
 *
 * @author Dibosh
 */

class INI {

public static function 
save($fname,$array){

        
$f_ini fopen($fname.'.ini','w') or die("can't open");
        foreach(
$array as $part_key => $part_cont){

            
fwrite ($f_ini,"***91;".$part_key."***93;\n") or die();
                foreach(
$part_cont as $key => $value){

                        
fwrite ($f_ini,$key."=".$value."\n") or die();

                    }
            }

        
fclose($f_ini) or die();
        }

public static function 
load($fname){
            return 
parse_ini_file($fname.'.ini',1);
        }
}
?>
PHP код:
<?php
/**
 * index.php
 *
 * @author Dibosh
 */

define(UPDATE,"./update/");
define(CONFIG,"./config/");

include(
'UpdateFields.php');
include(
'ini.php');

UpdateFields::Update();

$F_array INI::load(CONFIG.'DataFields');

print 
"<ul>";
foreach(
$F_array as $part => $items){
    print 
"<li>".$part."</li>";
    print 
"<ul>";
    foreach(
$items as $key => $num){
        print 
"<li>".$key." = ".$num."</li>";
        }
    print 
"</ul>";
}
print 
"</ul>";

# пример использования
print $F_array***91;'ItemFields'***93;***91;'ITEM_FIELD_CREATOR'***93;;
# узнаем позицию для ITEM_FIELD_CREATOR

//дальнейший код не тестировался

$db = new PDO('#параметры');

$st $db->prepare("UPDATE `table` SET `data`=CONCAT(CAST(SUBSTRING_INDEX(`data`, ' ', ?) AS CHAR), ' ', ?, ' ',
CAST(SUBSTRING_INDEX(`data`, ' ', -(? - ?))AS CHAR)) WHERE `guid` = ?"
);

$part   'ItemFields';
$key    'ITEM_FIELD_CREATOR';
$value  '777';
$guid   '10';

$st->execute(array($F_array***91;$part***93;***91;$key***93;,$value,count($F_array***91;$part***93;),$F_array***91;$part***93;***91;$key***93;),$guid);


?>
Gerald вне форума   Ответить с цитированием
2 пользователя(ей) сказали cпасибо:
Konctantin (14.03.2010), Shadez (14.03.2010)
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обновление БД(пример) DeusModus Новичкам 7 30.07.2010 13:26


Текущее время: 23:19. Часовой пояс GMT +3.


ru-mangos.ru - Русское сообщество MaNGOS
Главная цель проекта MaNGOS - обучающая, поэтому разрешается использовать исходный код и собранную программу только для образовательных целей.
Вы не можете использовать MaNGOS в коммерческих целях, а также не разрешается устанавливать публичные серверы на базе MaNGOS.
Любое копирование материалов, информации в любом виде без указания источника - форума Ru-MaNGOS будет считаться нарушением авторских прав и нарушением Уголовного Кодекса РФ, ст. 146 ст. 147.
Перевод vBulletin: zCarot