![]() |
[PHP]PHP Code im String soll vor Ausgabe interpretiert werdn
Hallo,
Ich habe einen String der mitunter PHP- Code enthält z.B
Code:
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?
$string = '<html>...<?php include("../test.txt") ?>..</html>';
|
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:
Bei Singlequotes werden sie nur separiert geparst:
$foo = "Test";
$string = "Dies ist ein $foo"; // -> Dies ist ein Test $string = "Dies ist ein ".$foo; // -> Dies ist ein Test
Code:
Nochmal Tante Edith:
$foo = "Test";
$string = 'Dies ist ein $foo'; // -> Dies ist ein $foo $string = 'Dies ist ein '.$foo; // -> Dies ist ein Test 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. |
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.
|
Re: [PHP]PHP Code im String soll vor Ausgabe interpretiert w
|
Re: [PHP]PHP Code im String soll vor Ausgabe interpretiert w
Habe diesen Code-Schnipsel bei einem Kommentar auf
![]()
Code:
Was muss ich ändern?
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 |
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 |
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:
Warum kommt der Fehler?
<div class="lauftext"> <marquee scrolldelay="80" behavior="scroll"><?php include("http://localhost/editor/pages/news.txt") ?> </marquee></div>
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. |
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:
zu ersetzen. ;)
echo "$i";
|
Re: [PHP]PHP Code im String soll vor Ausgabe interpretiert w
Zitat:
|
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:
![]() |
Re: [PHP]PHP Code im String soll vor Ausgabe interpretiert w
OK, da ich aber keine anderen Scriptsprachen nutzen werde, belass ich es bei <? .. ?>.
Danke an alle :thumb: |
Re: [PHP]PHP Code im String soll vor Ausgabe interpretiert w
Schonmal daran gedacht, die TXT-Datei per fopen() und fget() auszulesen, bspw. in ein Array und dieses dann auszugeben, bzw. noch direkter gleich die ausgelesenen Daten in einen String zu lesen und auszugeben?
mfg |
Re: [PHP]PHP Code im String soll vor Ausgabe interpretiert w
Was wäre dann besser?
|
Re: [PHP]PHP Code im String soll vor Ausgabe interpretiert w
Zitat:
Aber er sagte doch - er hat den String in der Form und kann es vorher nicht beeinflussen. air |
Re: [PHP]PHP Code im String soll vor Ausgabe interpretiert w
Zitat:
MfG freak |
Re: [PHP]PHP Code im String soll vor Ausgabe interpretiert w
Habe nun ein weiteres Problem, das aber noch zur urspr. Frage gehört:
Ich habe eine Seite die so aussieht:
Code:
Nachdem diese Seite interpretiert wurde von PHP enthält der HTML Code der mit echo ausgegeben wird Schlüsselwörter, die ich gerne ersetzen möchte. Versuche ich nun in meiner "ersetzungs_phpdatei"
<?
include("../php/constants.php"); $template_anfang; // doctype usw. echo '<meta name="Description" content="Sauna Balingen Wellness La Stone"> <meta name="Pagetopic" content="Wellness">'; // meta infos echo $template_bislaufschrift; echo include("../pages/news.txt"); // Laufschrift echo $template_nachlaufschrift; // Navigation usw. // Contentbereich echo '<span style="color: rgb(153,204,204)"><span style="font-size: 24px; color: rgb(0,0,0); font-family: verdana,geneva"><span style="color: rgb(0,0,153)">Aktuelles und Neues</span><img a><span style="color: rgb(51,0,0)">.</span> </font></p></blockquote></blockquote></span><span style="font-size: 24px; color: rgb(0,0,0); font-family: verdana,geneva"></span></span>'; echo $template_ende; ?> die Seite vorher mit eval() zu durchlaufen und dann die Schlüsselwörter zu ersetzen, klappt das nicht da ja dann die echo befehle ausgeführt werden und die Seite nur im Browser richtig dasteht, ich den geparsten Text aber nicht in meiner Funktion zur Verfügung habe. Die echo's kann ich aber nicht weglassen da die Seite ja auch ganz normal aufgerufen werden können muss. Wie ginge das? Ich hoffe man konnte einigermaßen verstehen was ich meine :???: |
Re: [PHP]PHP Code im String soll vor Ausgabe interpretiert w
ähm... könntest du nicht einfach die seite umschrieben? In nem jahr willst/sollst du wieder irgendwas ändern und stülpst wieder irgend so n konstrukt drüber... und das wird irgenwann sinnlos.
Ansonsten könntest du alle echo-Befehle durch $echo .= "..." ersetzen. damit kannst du dir dann alles einfangen. wird aber wieder kompliziert, weils ja mit dem HTML in der richtigen reihenfolge ausgegeben werden muss... Ich an deiner Stelle würde mir mal ein kleines Kundengespräch alá "Also ich krieg das jetzt schon hin so, das wird dann aber teuer..." überlegen. :? |
Re: [PHP]PHP Code im String soll vor Ausgabe interpretiert w
Ich lasse jetzte die echo "" s weg und füge stattdessen mit include() HTML Fragmente ein, wie Header, Footer usw. so gehts jetzt gut.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz