Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: преоброзовать назад (var_export())
 
 автор: а-я   (28.06.2010 в 08:48)   письмо автору
 
 

в поле вывожу массивы через var_export()

а как можно назад получить массив для php?

думал, через eval или через create_function сделать.. но уж слишком много прав будет..
да и при любой ошибки будет фатал эррор

т.е. чтобы проверить и записать его в БД.

  Ответить  
 
 автор: Trianon   (28.06.2010 в 09:17)   письмо автору
 
   для: а-я   (28.06.2010 в 08:48)
 

выводите через что-нибудь другое.
От implode до serialize

  Ответить  
 
 автор: а-я   (28.06.2010 в 09:30)   письмо автору
 
   для: Trianon   (28.06.2010 в 09:17)
 

мне надо вывести именно в таком виде.. т.е. надо дать менять значение массива.

так еще сделали в MoPhpAdmin

  Ответить  
 
 автор: Trianon   (28.06.2010 в 09:57)   письмо автору
 
   для: а-я   (28.06.2010 в 09:30)
 

что такое MoPhpAdmin?

Вывести - одно.
А ввести - совсем другое.

Впрочем, надо - делайте.
Устраивайте полноценный анализ текста, с компиляцией в дерево выражения.
Сами же и контролируйте допустимость применения тех или иных его элементов.

  Ответить  
 
 автор: а-я   (29.06.2010 в 07:22)   письмо автору
 
   для: Trianon   (28.06.2010 в 09:57)
 

>что такое MoPhpAdmin?
заработался... т.е. MoMyAdmin - web-интерфейс для работы с MongoDB
>
>Вывести - одно.
>А ввести - совсем другое.
>
>Впрочем, надо - делайте.
>Устраивайте полноценный анализ текста, с компиляцией в дерево выражения.
>Сами же и контролируйте допустимость применения тех или иных его элементов.

делаю через eval() -все равно эт в Админ панели..
перехватываю ошибки, единственное хотелось бы сначала проанализировать данные..
есть в нем что-то вроде [^array(.*?)] - т.е. исключить все функции.. только массивы(вложенные)

  Ответить  
 
 автор: sms-send   (29.06.2010 в 20:40)   письмо автору
 
   для: а-я   (29.06.2010 в 07:22)
 

<?php

$var 
= array(array(array()), array());
$php_code var_export($vartrue);
$allowed_tokens = array(
    
'('','')',
    
T_WHITESPACET_ARRAYT_DOUBLE_ARROW,
    
T_CONSTANT_ENCAPSED_STRINGT_LNUMBERT_DNUMBER);

if(
check_allowed_tokens($php_code$allowed_tokens))
{
    
$error_reporting_level error_reporting(0);
    
var_dump(eval("return $php_code;"));
    
error_reporting($error_reporting_level);
}

function 
check_allowed_tokens($php_code$allowed_tokens)
{
    
$tokens token_get_all('<?php ;'.$php_code);

    unset(
$tokens[0], $tokens[1]); // убираем токены '<?php ;'

    
foreach($tokens as $token)
    {
        if(
is_array($token))
            
$token $token[0];
        if(!
in_array($token$allowed_tokenstrue))
            return 
false;
    }

    return 
true;
}


Для допущения булевых констант придётся разрешить токен T_STRING, но тогда будут нужны уже более сложные проверки, чтобы отсечь вызовы функций.

  Ответить  
 
 автор: а-я   (30.06.2010 в 07:56)   письмо автору
 
   для: sms-send   (29.06.2010 в 20:40)
 

ого... благодарю.. что-то новенькое..
буду разбираться..

----
UPDATE: прост шикарный вариант.. работает на ура. Посмотрим это все в боевых действиях.
еще раз спасибо.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования