ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Регулярка
  #1  
Старый 04.05.2009, 07:41
Аватар для Trieg
Trieg
Познающий
Регистрация: 26.10.2007
Сообщений: 83
Провел на форуме:
394231

Репутация: 50
По умолчанию Регулярка

в файле есть кусок кода который мне надо выцепить..
PHP код:
    $template->assign(array(
        
'PL_NAME' => $info['Name'],
        
'PL_FOLDER' => $pl,
        
'PL_CONFIG_COUNT' => ($totalconfig ) ? $totalconfig false,
        
'PL_URL' => 'index.php?admin=config&n=edit&o=plugins&p='.$pl,
        
'PL_DESCRIPTION' => (isset($info['Description'])) ? $info['Description'] : false,
        
'PL_VERSION' => (isset($info['Version'])) ? $info['Version'] : false,
        
'PL_DATE' => (isset($info['Date'])) ? $info['Date'] : false,
        
'PL_AUTHOR' => (isset($info['Author'])) ? $info['Author'] : false,
        
'PL_COPYRIGHT' => (isset($info['Copyright'])) ? $info['Copyright'] : false,
        
'PL_COUNT_PART' => count($parts),
    )); 
цепляю так
PHP код:
preg_match_all('#\$template\s*->\s*assign\s*\(\s*array\s*\((.+\s*=>\s*.+)\)\s*\)\s*;#Uis'$plugin_file_code$assign_vars); 
на выходе получаю
PHP код:
Array
(
    [
0] => 
        
'PL_NAME' => $info['Name'],
        
'PL_FOLDER' => $pl,
        
'PL_CONFIG_COUNT' => ($totalconfig ) ? $totalconfig false,
        
'PL_URL' => 'index.php?admin=config&n=edit&o=plugins&p='.$pl,
        
'PL_DESCRIPTION' => (isset($info['Description'])) ? $info['Description'] : false,
        
'PL_VERSION' => (isset($info['Version'])) ? $info['Version'] : false,
        
'PL_DATE' => (isset($info['Date'])) ? $info['Date'] : false,
        
'PL_AUTHOR' => (isset($info['Author'])) ? $info['Author'] : false,
        
'PL_COPYRIGHT' => (isset($info['Copyright'])) ? $info['Copyright'] : false,
        
'PL_COUNT_PART' => count($parts),

по идее меня интересуют тока ключи массива.. можно ли при помощи 1 регулярки получить все ключи в виде
PHP код:
        Array
        (
            [
0] => PL_NAME
            
[1] => PL_FOLDER
            
[2] => PL_CONFIG_COUNT
            
[3] => PL_URL
            
[4] => PL_DESCRIPTION
            
[5] => PL_VERSION
            
[6] => PL_DATE
            
[7] => PL_AUTHOR
            
[8] => PL_COPYRIGHT
            
[9] => PL_COUNT_PART
        

 
Ответить с цитированием

  #2  
Старый 04.05.2009, 10:13
Аватар для MuXaJIbI4
MuXaJIbI4
Познающий
Регистрация: 20.11.2008
Сообщений: 68
Провел на форуме:
108674

Репутация: 32
По умолчанию

array_keys
 
Ответить с цитированием

  #3  
Старый 04.05.2009, 10:40
Аватар для Gifts
Gifts
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
Провел на форуме:
2769640

Репутация: 1304


По умолчанию

Выделенный топик для регулярок - не интересно, надо обязательно засрать форум новыми темами.

PHP код:
preg_match_all("~'([^']+)' =\>~i",$in,$out);
print_r($out); 
 
Ответить с цитированием

  #4  
Старый 04.05.2009, 11:32
Аватар для Trieg
Trieg
Познающий
Регистрация: 26.10.2007
Сообщений: 83
Провел на форуме:
394231

Репутация: 50
По умолчанию

насчет топа тупанул.. бывает)
MuXaJIbI4 а тебя не смущает что
PHP код:
        'PL_NAME' => $info['Name'], 
        
'PL_FOLDER' => $pl
        
'PL_CONFIG_COUNT' => ($totalconfig ) ? $totalconfig false
        
'PL_URL' => 'index.php?admin=config&n=edit&o=plugins&p='.$pl
        
'PL_DESCRIPTION' => (isset($info['Description'])) ? $info['Description'] : false
        
'PL_VERSION' => (isset($info['Version'])) ? $info['Version'] : false
        
'PL_DATE' => (isset($info['Date'])) ? $info['Date'] : false
        
'PL_AUTHOR' => (isset($info['Author'])) ? $info['Author'] : false
        
'PL_COPYRIGHT' => (isset($info['Copyright'])) ? $info['Copyright'] : false
        
'PL_COUNT_PART' => count($parts), 
строка...

Gifts, твоя регулярка вытянет ещё кучу мусора который мне не нужен.. мне надо тянуть только то что между $template->assign(array(.........));

PS: решил проблему при помощи preg_replace и eval... но всеже интересно можно ли это сделать 1 махом не юзая eval
 
Ответить с цитированием

  #5  
Старый 04.05.2009, 11:54
Аватар для Gifts
Gifts
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
Провел на форуме:
2769640

Репутация: 1304


По умолчанию

Одной не получится
PHP код:
preg_match('~$template-\>assign\((.+?)\);~msi',$in,$tmp);
preg_match_all("~'([^']+)' =\>~i",$tmp[1],$out);
print_r($out); 
 
Ответить с цитированием

  #6  
Старый 04.05.2009, 12:39
Аватар для Red_Red1
Red_Red1
Участник форума
Регистрация: 12.01.2007
Сообщений: 262
Провел на форуме:
4608122

Репутация: 874
Отправить сообщение для Red_Red1 с помощью ICQ
По умолчанию

А вот это как вариант одной регуляркой
PHP код:
$plugin_file_code='$template->assign(array(
        \'PL_NAME\' => $info[\'Name\'],
        \'PL_FOLDER\' => $pl,
        \'PL_CONFIG_COUNT\' => ($totalconfig > 0 ) ? $totalconfig : false,
        \'PL_URL\' => \'index.php?admin=config&n=edit&o=plugins&p=\'.$pl,
        \'PL_DESCRIPTION\' => (isset($info[\'Description\'])) ? $info[\'Description\'] : false,
        \'PL_VERSION\' => (isset($info[\'Version\'])) ? $info[\'Version\'] : false,
        \'PL_DATE\' => (isset($info[\'Date\'])) ? $info[\'Date\'] : false,
        \'PL_AUTHOR\' => (isset($info[\'Author\'])) ? $info[\'Author\'] : false,
        \'PL_COPYRIGHT\' => (isset($info[\'Copyright\'])) ? $info[\'Copyright\'] : false,
        \'PL_COUNT_PART\' => count($parts),
    ));'
;

preg_match_all('#PL_[A-Z_]+?#Uis'$plugin_file_code$assign_vars);  
echo 
'<pre>';
print_r ($assign_vars); 
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
регулярка попугай PHP, PERL, MySQL, JavaScript 9 17.01.2009 16:37



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ