Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [PHP]PHP Code im String soll vor Ausgabe interpretiert werdn (https://www.delphipraxis.net/56160-%5Bphp%5Dphp-code-im-string-soll-vor-ausgabe-interpretiert-werdn.html)

Wuaegner 1. Nov 2005 16:39


[PHP]PHP Code im String soll vor Ausgabe interpretiert werdn
 
Hallo,
Ich habe einen String der mitunter PHP- Code enthält z.B
Code:
$string = '<html>...<?php include("../test.txt") ?>..</html>';
Lasse ich $string nun mit echo ausgeben, so präsentiert mir der Browser ja diesen String, ohne dass das PHP Konstrukt darin interpretiert wurde. Wie schaffe ich nun die Ausgabe, dass er den Teil in <?php vorher interpretiert und dann ausgibt?

Airblader 1. Nov 2005 16:44

Re: [PHP]PHP Code im String soll vor Ausgabe interpretiert w
 
Entweder Doublequotes "" verwenden, oder auspunkten: 'test'.$bla.'test'

Tante Edith will noch ergänzen:

Bei Doublequotes kann eine Variable entweder direkt im String stehen oder mti dem Punktseparator getrennt werden:

Code:
$foo = "Test";
$string = "Dies ist ein $foo"; // -> Dies ist ein Test
$string = "Dies ist ein ".$foo; // -> Dies ist ein Test
Bei Singlequotes werden sie nur separiert geparst:

Code:
$foo = "Test";
$string = 'Dies ist ein $foo'; // -> Dies ist ein $foo
$string = 'Dies ist ein '.$foo; // -> Dies ist ein Test
Nochmal Tante Edith:
Verwendest du "", musst du übrigens escapen:

Code:
$string = "Bla sagt:"blubb" und geht."; // -> Falsch / Gibt nen Parse Error

-----------------

So, und nun ordentlich:
Da hab ich wohl ganz gravierend was übersehen.
Bekommst du die Daten so?
Wenn ja, schau dir mal [url]http://de.php.net/eval[/url] an, ansonsten verwende doch lieber [url]http://de.php.net/file-get-contents[/url]

air
$string = "Bla sagt:\"blubb\" und geht."; // Richtig -> Bla sagt:"blubb" und geht.

Wuaegner 1. Nov 2005 16:52

Re: [PHP]PHP Code im String soll vor Ausgabe interpretiert w
 
nein der string ist fest, da kann ich nichts daran ändern... wenn dann müsste ich mir die position von <?php suchen und dann das danach bis ?> mit .phpcode. anhängen, fand das aber zu umständlich weil ich dachte es gäbe ein funktion die das schon kann.

Airblader 1. Nov 2005 16:53

Re: [PHP]PHP Code im String soll vor Ausgabe interpretiert w
 
Ja, habs grad gemerkt ;)

Schau dir mal eval() an, sei aber vorsichtig, da mächtig ;)

air

Wuaegner 1. Nov 2005 18:05

Re: [PHP]PHP Code im String soll vor Ausgabe interpretiert w
 
Habe diesen Code-Schnipsel bei einem Kommentar auf php.net gefunden, der eigentlich das tun sollte was ich brauche, nämlich meinen ..include("..") Code im String auszuführen jedoch erhalte ich nun die Fehlermeldung syntax error, unexpected T_INCLUDE in C:\apachefriends\xampp\htdocs\editor\php\page_fini shed.php(75) : eval()'d code on line 13

Code:
  function eval_mixed_helper($arr){ 
  return ("echo stripslashes(\"".addslashes($arr[1])."\");");
  }

  function eval_mixed($string){
  $string = "<? ?>".$string."<? ?>";
  $string = preg_replace("/<\?=\s+(.*?)\s+\?>/", "<? echo $1; ?>", $string);
  $string = str_replace('?>', '', str_replace( array('<?php', '<?'), '', preg_replace_callback( "/\?>((.|\n)*?)<\?/","eval_mixed_helper",$string) ) );
  return eval($string);
  }

    // output to variable
  $final_html = eval_mixed($meinstring);
 
 
  echo $final_html
Was muss ich ändern?

Aenogym 1. Nov 2005 18:12

Re: [PHP]PHP Code im String soll vor Ausgabe interpretiert w
 
hi flo,

eval() gibt keinen string zurück, den du per echo zum ausführen bringst. sondern es führt den im paramater enthaltenen php-code direkt aus.

demnach kannst du die zeile return eval(...); löschen und stattdessen nur eval(...); dahin schreiben. an der stele wird der code dann ausgeführt.

aenogym

Wuaegner 1. Nov 2005 19:29

Re: [PHP]PHP Code im String soll vor Ausgabe interpretiert w
 
OK, aber der Fehler kommt weiterhin.
Hier der der Teil des $meinstring an dem es liegt:
Code:
<div class="lauftext"> <marquee scrolldelay="80" behavior="scroll"><?php include("http://localhost/editor/pages/news.txt") ?> </marquee></div>
Warum kommt der Fehler?

Edit1: Zu Testzwecken habe ich mal "include (...)" mit "$i=5;echo $i;" ersetzt.

Dann kommt die Fehlermeldung: unexpected T_Variable...

Er erwartet vielleicht noch etwas nach meinem <?php ?

Edit2: OK jetzt klappt es. Ich habe <?php durch <? ersetzt. <?php finde ich aber "schöner", wie muss ich die Funktion die ich gefunden habe umschreiben, damit es auch so klappt? Steig nicht ganz durch bei der Funktion. Wenn es aufwändig wäre, dass das mit <?php auch geht dann lass ich es so, es sei denn es hätte wirkliche Vorteile <?php statt <? zu nutzen.

malo 1. Nov 2005 20:05

Re: [PHP]PHP Code im String soll vor Ausgabe interpretiert w
 
Eigentlich dürfte es zwischen "<?php" und "<?" keine Unterschiede geben. Ich hab sowas jedenfalls noch nie feststellen können (ist halt nur der Schönheit zuliebe - oder des Programmierstils). :gruebel:

edit: Vielleicht könntest du versuchen, "echo $i;" durch "echo($i);" oder durch
Code:
echo "$i";
zu ersetzen. ;)

Chewie 1. Nov 2005 20:12

Re: [PHP]PHP Code im String soll vor Ausgabe interpretiert w
 
Zitat:

Zitat von Wuaegner
Edit2: OK jetzt klappt es. Ich habe <?php durch <? ersetzt. <?php finde ich aber "schöner", wie muss ich die Funktion die ich gefunden habe umschreiben, damit es auch so klappt? Steig nicht ganz durch bei der Funktion. Wenn es aufwändig wäre, dass das mit <?php auch geht dann lass ich es so, es sei denn es hätte wirkliche Vorteile <?php statt <? zu nutzen.

Das ganze lässt sich in der php.ini einstellen. Der Grund für die Langform ist, dass auch manche andere Scriptsprachen das <? benutzen. Benutzt man <?php, so ist eindeutig, dass PHP gemeint ist.

Airblader 1. Nov 2005 21:16

Re: [PHP]PHP Code im String soll vor Ausgabe interpretiert w
 
Laut einem Userkommentar auf php.net macht es doch einen unterschied zwischen <? und <?php.
Hier der Quote:

Zitat:

to load a php file to a variable then execute it, try this

Code:
<?php
$code=file_get_contents("file.php");
$code=str_replace('<'.'?php','<'.'?',$code);
$code='?'.'>'.trim($code).'<'.'?';
eval($code);
?>
using < ?php within eval does not work, but < ? does. in case there is html in the file loaded, the script doesn't remove the < ?php and ? >, but insted adds ? > and < ? around the code loaded from the file. it's simple and works very well. I also broke up the tags in the 3rd and 4th lines of code to keep from having problems if the lines are commented out.

( http://de.php.net/eval )


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:25 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz