AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein [PHP]PHP Code im String soll vor Ausgabe interpretiert werdn
Thema durchsuchen
Ansicht
Themen-Optionen

[PHP]PHP Code im String soll vor Ausgabe interpretiert werdn

Ein Thema von Wuaegner · begonnen am 1. Nov 2005 · letzter Beitrag vom 2. Nov 2005
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Wuaegner
Wuaegner

Registriert seit: 8. Feb 2004
406 Beiträge
 
Delphi 6 Enterprise
 
#1

[PHP]PHP Code im String soll vor Ausgabe interpretiert werdn

  Alt 1. Nov 2005, 17:39
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?
Wuaegner
Gruß Flo
Unternehmensberatung
  Mit Zitat antworten Zitat
Benutzerbild von Airblader
Airblader

Registriert seit: 29. Okt 2004
Ort: Geislingen an der Steige
742 Beiträge
 
#2

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

  Alt 1. Nov 2005, 17:44
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.
Ingo Bürk
Es nimmt der Augenblick, was Jahre geben.

Johann Wolfgang von Goethe
  Mit Zitat antworten Zitat
Benutzerbild von Wuaegner
Wuaegner

Registriert seit: 8. Feb 2004
406 Beiträge
 
Delphi 6 Enterprise
 
#3

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

  Alt 1. Nov 2005, 17:52
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.
Wuaegner
Gruß Flo
Unternehmensberatung
  Mit Zitat antworten Zitat
Benutzerbild von Airblader
Airblader

Registriert seit: 29. Okt 2004
Ort: Geislingen an der Steige
742 Beiträge
 
#4

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

  Alt 1. Nov 2005, 17:53
Ja, habs grad gemerkt

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

air
Ingo Bürk
Es nimmt der Augenblick, was Jahre geben.

Johann Wolfgang von Goethe
  Mit Zitat antworten Zitat
Benutzerbild von Wuaegner
Wuaegner

Registriert seit: 8. Feb 2004
406 Beiträge
 
Delphi 6 Enterprise
 
#5

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

  Alt 1. Nov 2005, 19:05
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?
Wuaegner
Gruß Flo
Unternehmensberatung
  Mit Zitat antworten Zitat
Benutzerbild von Aenogym
Aenogym

Registriert seit: 7. Mär 2004
Ort: Schwerin
1.089 Beiträge
 
Delphi 7 Enterprise
 
#6

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

  Alt 1. Nov 2005, 19:12
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
Steffen Rieke
Was nicht buzzt, wird buzzend gemacht!
http://blog.base-records.de
http://www.base-records.de
  Mit Zitat antworten Zitat
Benutzerbild von Wuaegner
Wuaegner

Registriert seit: 8. Feb 2004
406 Beiträge
 
Delphi 6 Enterprise
 
#7

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

  Alt 1. Nov 2005, 20:29
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.
Wuaegner
Gruß Flo
Unternehmensberatung
  Mit Zitat antworten Zitat
Benutzerbild von malo
malo

Registriert seit: 19. Sep 2004
2.115 Beiträge
 
#8

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

  Alt 1. Nov 2005, 21:05
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).

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

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#9

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

  Alt 1. Nov 2005, 21:12
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.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Benutzerbild von Airblader
Airblader

Registriert seit: 29. Okt 2004
Ort: Geislingen an der Steige
742 Beiträge
 
#10

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

  Alt 1. Nov 2005, 22:16
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 )
Ingo Bürk
Es nimmt der Augenblick, was Jahre geben.

Johann Wolfgang von Goethe
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:35 Uhr.
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