Frage
echo ("<div style=\"text-align:center\">" . include ('file.php') . "</div>\n");
Ich bin mir nicht sicher, warum, aber wenn ich diese Zeile in meinem Skript habe ich bekommen leeren Bildschirm: (
Lösung
echo "<div style=\"text-align:center\">";
include ('file.php');
echo "</div>\n";
Fügen Sie nicht das Ergebnis der Analyse der Datei zurück, so dass es überhaupt keinen Sinn macht, hier zu verketten.
Andere Tipps
Wenn Sie dieses Stück Code ausgeführt wird:
echo ("<div style=\"text-align:center\">" . include ('temp-2.php') . "</div>\n");
(was ich aus Ihrem Beispiel-Kopie eingefügt, nur den Namen der Datei ändern)
Ich bekomme diese Warnung:
Warning: include(temp-2.php</div> ) [function.include]: failed to open stream: No such file or directory
Nicht sicher die ()
für die include
Richtlinie tun, was Sie erwarten ...
Eigentlich Beispiel # 4 auf dem umfasst manuelle Seite sieht aus wie es dies erklären könnte:
<?php
// won't work, evaluated as include(('vars.php') == 'OK'), i.e. include('')
if (include('vars.php') == 'OK') {
echo 'OK';
}
// works
if ((include 'vars.php') == 'OK') {
echo 'OK';
}
?>
Und in der Tat, um Ihren Code zu diesem Umschreiben:
echo ("<div style=\"text-align:center\">" . (include 'temp-2.php') . "</div>\n");
funktioniert viel besser. Keine Warnung - und die Datei wird tatsächlich korrekt enthalten
Als Nebenbemerkung: Wenn Sie einen weißen Bildschirm bekommen, ist es wahrscheinlich, weil Ihre Konfiguration „versteckt“ Fehler und Warnungen - die für eine Entwicklung environnement nicht ganz nett. Haben diejenigen angezeigt würde halp Sie ganz ein bisschen
Um das zu ändern, können Sie die error_reporting
und display_errors
Optionen in der php.ini Datei.
Oder, wenn Sie Zugang haben nicht zu, dass man, können Sie einen href verwenden <= „http://php.net/manual/en/function.error-reporting.php“ rel = „nofollow noreferrer“ > error_reporting
und ini_set
- so etwas wie dies von Ihrem Skript am Anfang vielleicht tun:
error_reporting(E_ALL);
ini_set('display_errors', 'On');
Hinweis: natürlich, Sie wollen nicht, dass auf der Produktionsumgebung, auf das Sie sollen Fehler protokollieren (siehe log_errors
), und sie wird nicht angezeigt.
Ich weiß nicht, ob du so etwas tun kann. Haben die erste und dann tun das Echo einer bestimmten Variablen aus der Include-Datei.
Ich denke, man müsse so etwas wie dies tun:
ob_start();
include('file.php');
$contents = ob_get_clean();
echo ("<div style=\"text-align:center\">" . $contents . "</div>\n");
die „include“ Richtlinie nicht alles zurückgeben, so versucht es anzuhängen, um eine Zeichenfolge zur Arbeit geht nicht.
include
ist keine Funktion, sondern ein spezielles Sprachkonstrukt. Das ist auch der Grund, warum Sie die Klammer um die „Parameter“ nicht brauchen als include
nur einen „Parameter“ hat. in Klammern, dass Wrapping ist wie jeder andere Wert in Klammern Verpackung:
1 === (1) === ((1)) === (((1))) === …
Stattdessen müssen Sie das gesamte Konstrukt in Klammern wickeln:
echo "<div style=\"text-align:center\">" . (include 'file.php') . "</div>\n";
Aber da include
die Ausgabe der enthaltenen Skriptdatei nicht zurück, sondern druckt er direkt, würden Sie brauchen, um die Ausgabe zu puffern und die Rückgabe an das Skript, das diese Datei enthalten mit:
<?php // file.php
ob_start();
// …
return ob_get_clean();
Das würde funktionieren. Aber ich glaube nicht, dass Sie das tun wollen. So ist es wahrscheinlich ganz einfacher:
echo "<div style=\"text-align:center\">";
include 'file.php';
echo "</div>\n";
Übrigens: echo
, print
, exit
und die
sind spezielle Sprache zu konstruiert. Siehe auch require_once () oder die () nicht funktioniert
zur Ausgabe der Inhalte file.php werden Sie wahrscheinlich verwenden möchten http: //us3.php. net / file_get_contents
Gibt es etwas in file.php
? Es kann leer sein, oder etwas in ihm kann einen Fehler verursachen.
Schauen Sie sich den Quellcode in Ihrem Browser, nicht nur der sichtbare Teil. Normalerweise können Sie dies durch Drücken von Strg + U. Wenn es nur ein leeres div
Element ausgegeben wird, würden Sie einen leeren Bildschirm im Browser sehen. Und bedenken Sie, dass Dateien .php werden höchstwahrscheinlich in Ihrem Setup analysiert, bevor sie ausgegeben werden, was bedeutet, würden Sie nicht immer <?php ?>
Tags und den Code dazwischen sie sehen.
ich nie daran gedacht sind als eine Funktion, die eine Zeichenfolge zurück Sie können drucken.
Die Reference Manual legt nahe, dass, wenn überhaupt, es gibt ein boolescher Wert.
Gibt es einen zusätzlichen Zeilenumbruch am Ende file.php?