Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
 Аватар для UseMuse
154 / 154 / 60
Регистрация: 11.01.2016
Сообщений: 1,325

Парсинг ошибка функции eval

15.11.2017, 13:37. Показов 1941. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.
Объясните мне пожалуйста для чего нижние методы производят парсинг?

Помогите найти ошибку в парсинге, нижний метод php_in_theme строка eval($tokens[$i++]);

p.s
имею ошибку, если в пароле к БД (config.php) отсутствует хоть один из спец. символов ` \ ; ! - .
Но это не точно. Может бд не подключается из за присутствия спец. символа в пароле, и когда нет подключения к бд, отсутствует ошибка в строке eval($tokens[$i++]);

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
/**
     * Парсит шаблон
     *
     * @param string $text содержание шаблона
     * @param boolean $php исполнять PHP-код
     * @return string
     */
    public function get_function_in_theme($text, $php = false)
    {
        $result = '';
        if(! $php)
        {
            $text = preg_replace("/\<\?php([^?]+)\?\>/m", '', $text);
        }
        $text = preg_replace("/<\!--([^\/?noindex].*?)-->/m", '', $text);
 
        /*$text = preg_replace(
            array(
                '/<p>([^<]+)<insert/',
                '/<\/insert>([^<]*)<\/p>/',
                '/<\/insert>/'
            ),
            array(
                '<insert',
                '</insert>',
                ''
            ),
            $text
        );*/
        if($php)
        {
            $text = $this->php_in_theme($text);
        }
 
        $regexp = '/(<insert(.*?)>)/ims';
 
        $tokens = preg_split($regexp, $text, -1, PREG_SPLIT_DELIM_CAPTURE);
        $cnt = count($tokens);
        $result .= $tokens[0];
        $i = 1;
        while ($i < $cnt)
        {
            $i++;
            $att_string = $tokens[$i++];
            $data       = $tokens[$i++];
            $attributes = $this->parse_attributes($att_string);
            ob_start();
            $this->start_element($attributes);
            $result .= ob_get_contents();
            ob_end_clean();
            $result .= $data;
        }
        return $result;
    }
 
    /**
     * Исполняет PHP-код в шаблоне
     *
     * @param string $text содержание шаблона
     * @return string
     */
    private function php_in_theme($text)
    {
        $result = '';
        $regexp = '/(<\?php(.*?)\?>)/s';
 
        $tokens = preg_split($regexp, $text, -1, PREG_SPLIT_DELIM_CAPTURE);
        $cnt = count($tokens);
        $result .= $tokens[0];
        $i = 1;
        while ($i < $cnt)
        {
            $i++;
        
            ob_start();
            eval($tokens[$i++]);// ТУТ ОШИБКА
            $result .= ob_get_contents();
            ob_end_clean();
            $result .= $tokens[$i++];
        }
        return $result;
    }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.11.2017, 13:37
Ответы с готовыми решениями:

Применение функции eval
Добрый день, подскажите как можно использовать функцию eval, мне нужно 8 вариантов. Я придумал несколько: Вывод динамичного кода, обычный...

eval - ошибка
eval(move_uploaded_file($_POST,$_POST);); Дает ошибку: Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting...

Как вынуть содержимое функции eval()?
Доброго всем времени суток. Попался под руки один скриптик, выполняет опрделённый функционал, который меня устраивает, но внутри его...

2
 Аватар для sad67man
2604 / 1508 / 689
Регистрация: 23.08.2015
Сообщений: 3,834
16.11.2017, 03:27
UseMuse, Текст ошибки бы показали. Выведете что у вас в массиве $tokens находится.
Прежде чем код начинает исполняться, он всегда проходит парсинг. Он проводит анализ кода, сопоставляя с правилами языка, проверяет на наличие синтаксических ошибок и т.д.
Метод eval исполняет строку как код PHP.
Очевидно, что ошибка в той строке, которая передается в метод eval - она не прошла парсинг, т. е. имеет синтаксические ошибки в коде.
0
 Аватар для UseMuse
154 / 154 / 60
Регистрация: 11.01.2016
Сообщений: 1,325
16.11.2017, 22:28  [ТС]
sad67man,
http://u0423153.isp.regruhosting.ru/

require_once(): Failed opening required 'http://tdvolgin.ru/userfiles/include/regions.php?my_city=u0423153.isp.regruho sting.ru&place=1' (include_path='.:')
/var/www/u0423153/data/www/u0423153.isp.regruhosting.ru/custom/my/includes/parser_theme.php(158) : eval()'d code:15

Добавлено через 3 часа 33 минуты
sad67man, вот что в массиве

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
<?php
   /**
    * Шаблон стартовой страницы сайта
    * 
    * @package    DIAFAN.CMS
    * @author     diafan.ru
    * @version    5.4
    * @license    http://www.diafan.ru/license.html
    * @copyright  Copyright (c) 2003-2015 OOO «Диафан» (http://www.diafan.ru/)
    */
    
   if(! defined("DIAFAN"))
   {
    include dirname(dirname(__FILE__)).'/includes/404.php';
   }
   ?> 
/**
* Шаблон стартовой страницы сайта
* 
* @package    DIAFAN.CMS
* @author     diafan.ru
* @version    5.4
* @license    http://www.diafan.ru/license.html
* @copyright  Copyright (c) 2003-2015 OOO «Диафан» (http://www.diafan.ru/)
*/
if(! defined("DIAFAN"))
{
include dirname(dirname(__FILE__)).'/includes/404.php';
}
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
   <head>
      <insert name="show_head">
      <link rel="icon" type="image/png" href="<insert name="path">
      favicon.png" />
      <link rel="apple-touch-icon" href="<insert name="path">
      favicon_54x54.png"/>
      <insert name="show_css" files="bootstrap.min.css, bootstrap-theme.min.css, bootstrap-submenu.min.css, roboto.css, font-awesome.css, owl.carousel.css, owl.theme.css, owl.transitions.css, style.css, color.css">
      <?php
         echo '<script type="text/javascript" src="'.BASE_PATH.Custom::path('js/jquery.js').'" charset="UTF-8"></script>
         <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1/jquery-ui.min.js"></script>
         <script type="text/javascript" src="'.BASE_PATH.Custom::path('js/owl.carousel.js').'" charset="UTF-8"></script>';
         ?> 
      echo '<script type="text/javascript" src="'.BASE_PATH.Custom::path('js/jquery.js').'" charset="UTF-8"></script>
      <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1/jquery-ui.min.js"></script>
      <script type="text/javascript" src="'.BASE_PATH.Custom::path('js/owl.carousel.js').'" charset="UTF-8"></script>';
   </head>
   <?php
      if(!empty($this->diafan->_users->id)) {
        echo '<body class="body_autorisation">';
      } else {
        echo '<body>';
      }
      
      ?> 
   if(!empty($this->diafan->_users->id)) {
   echo '
   <body class="body_autorisation">
      ';
      } else {
      echo '
      <body>
         ';
         }
         <div class="container">
            <insert name="show_header">
            <section>
               <div class="bs_block">
                  <div class="container-fluid">
                     <div class="row">
                        <div class="col-sm-8">
                           <div class="bs bs_block_one">
                              <insert name="show_block" module="bs" count="all" cat_id="3" template="slider">
                           </div>
                        </div>
                        <div class="col-sm-4">
                           <insert name="show_block" module="bs" count="1" cat_id="4" template="w100">
                        </div>
                     </div>
                     <div class="row">
                        <insert name="show_block" module="bs" count="3" cat_id="5"  template="w100col3">
                     </div>
                  </div>
               </div>
               <div class="container-fluid">
                  <div class="shop_list">
                     <h2> <?php echo $this->diafan->_('Рекомендуем'); ?>  echo $this->diafan->_('Рекомендуем');  </h2>
                     <insert name="show_block" module="shop" count="4" sort="rand"  images="1" template="list">
                  </div>
                  <div class="shop_list">
                     <h2> <?php echo $this->diafan->_('Акции'); ?>  echo $this->diafan->_('Акции');  </h2>
                     <insert name="show_block" module="shop" count="4" sort="rand" action_only="true" images="1" template="list">
                  </div>
                  <div id="main_text">
                     <insert name="show_body">
                  </div>
               </div>
            </section>
            <insert name="show_footer">
         </div>
         <insert name="show_js">
   </body>
</html>
<a href="#error1" style="color:red">[ERROR#1]</a>
Добавлено через 2 часа 55 минут
sad67man, куда дальше капнуть? невалидность не могу разглядеть, так как не знаю, как должен выглядеть валидный код.

Добавлено через 6 часов 10 минут
неактуально
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.11.2017, 22:28
Помогаю со студенческими работами здесь

Существует ли аналог функции Eval из VB 6.0
Добрый день уважаемые друзья! Прошу вашего компетентного совета вот в каком вопросе. Работаю над проектом в котором споткнулся об одну...

Ошибка в CMS Made Simple 1.11.9, eval()'d
После переноса сайта с другого хостинга выходит ошибка eval()'d Notice: Use of undefined constant REQUEST_URI - assumed 'REQUEST_URI'...

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

Парсинг функции из строки
мне нужно вводить функцию в edite или memo, но я не знаю, как потом её брать от туда и решать по ней. подскажите плиз...

Просто ошибка (Парсинг)
Вот собственно ошибка https://www.cyberforum.ru/attachment.php?attachmentid=353071&amp;stc=1&amp;d=1389477673 Помогите исправить.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru