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: (

War es hilfreich?

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?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top