Не работает функция eval()

Тема в разделе "PHP", создана пользователем dandandan, 5 июл 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    975
    Симпатии:
    255
    подскажи плиз по eval()

    Код:
    if (file_exists('tmp.html')){    
        $txt=file_get_contents('tmp.html');    
        eval("\$txt =\"$txt\";");    
        echo $txt;
    }
    
    пробовал сделать так:
    Код:
    if (file_exists('tmp.html')){	
    	$txt=' ?>'.file_get_contents('tmp.html').'<?php ';
           eval("\$txt =\"$txt\";");	
    	echo $txt;
    }
    
    в итоге выводит текст который в файле html без интерпритации. Что делаю не так?

    Если этот html код вывожу в виде:

     
  2. saen

    saen

    Регистр.:
    6 авг 2006
    Сообщения:
    756
    Симпатии:
    129
    Покажи содержимое tmp.html
     
  3. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    883
    Симпатии:
    540
    Всё правильно. Ведь eval("\$txt =\"$txt\";"); АНАЛОГИЧНО $txt="$txt"; !!!
    Надо

    Код:
    if (file_exists('tmp.html')){    
        $txt=file_get_contents('tmp.html');    
        eval($txt);    
    }
    
     
  4. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    975
    Симпатии:
    255
    Не помогло.

    Вот пример кода:
    PHP:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <
    html xmlns="http://www.w3.org/1999/xhtml">
    <
    head>
    <
    meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
    <
    meta name="description" content="'.$main['m1'].'" />
    <
    meta name="keywords" content="'.$main['m2'].'" />
    <
    title>'.$mt['z_h'].'</title>
    </
    head>
    <
    body>
    '.$m['z'].'
    </body>
    </
    html>
     
  5. TrojaNFlash

    TrojaNFlash Прохожие

    если применять к последнему куску хтмеля ТС, то код будет выглядеть так:
    PHP:
    <?php
        $main
    ['m1'] = '123';
        
    $main['m2'] = 'zxc';
        
    $mt['z_h'] = 'qwerty';
        
    $m['z'] = 'asdf';
        eval(
    '?><? echo \''file_get_contents('tmp.html') . '\';');
    что пытался сделать ТС в первом посте представить крайне сложно..
     
  6. saen

    saen

    Регистр.:
    6 авг 2006
    Сообщения:
    756
    Симпатии:
    129
    если выводишь html-код в пхп, надо двойные кавычки экранировать слэшами.
     
  7. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    975
    Симпатии:
    255
    Все получилось. Вопрос снят. :)
     
  8. funman

    funman Постоялец

    Регистр.:
    28 дек 2007
    Сообщения:
    146
    Симпатии:
    25
    а причем тут Eval(); ?? тут проблема у автора что файл tmp.htm кривой.

    должно быть
    tmp.htm
    PHP:
    <!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN 

    http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd>
    <html xmlns=http://www.w3.org/1999/xhtml>
    <head>
    <
    meta http-equiv=Content-Type content=text/htmlcharset=windows-1251 />
    <
    meta name=description content=$main[m1] />
    <
    meta name=keywords content=$main[m2] />
    <
    title>$mt[z_h]</title>
    </
    head>
    <
    body>
    $m[z]
    </
    body>
    </
    html>  
    А вот Php которая его обрабатывает;
    PHP:
    <?
    $main['m1']='test';
    $main['m2']='test2';
    $mt['z_h']='some one';
    $m['z']="final";

    if (
    file_exists('tmp.htm')){    
        
    $txt=file_get_contents("tmp.htm");    
        eval(
    "\$txt =\"$txt\";");    
     echo 
    $txt;   
    }

    ?>
     
Статус темы:
Закрыта.