2010-02-13 12 views
8

sehr einfache PHP-Frage,, wie man Text aus einer PHP-Seite

zum Beispiel zurück zu bekommen, gibt demo.php nur einen Text wie dieses „Hallo“.

Wie kann ich diesen Text von einer anderen PHP-Seite bekommen?

UPDATE:

i tatsächlich Seite gemeint ist, es wie diese Ausgabe von "print 'Hallo';"

+0

Ahmet, in diesem Fall ändern Sie Ihre angenommene Antwort. Ich glaube, meine Antwort hält die Lösung bereit. –

Antwort

7

Gibt es return "hello", ist es Ausgabehello oder enthält es einfach enthälthello? Alle drei Szenarien sind unterschiedliche Probleme.


Wenn es return "hello"; als solche:

<?php 
return "hello"; 

dann können Sie leicht seinen Wert greifen, indem Sie die Datei mit und packte den Rückgabewert:

<?php 
$fileValue = include('secondFile.php'); 

Wenn es Ausgängehello als solche:

<?php 
echo "hello"; // or print "hello"; 

Sie Ausgabepufferung verwenden müssen, um das Ergebnis zu erfassen:

<?php 
ob_start(); 
include('secondFile.php'); 
$fileValue = ob_get_contents(); 
ob_end_clean(); 

Wenn es enthälthello als solche:

hello 

Sie können einfach lesen Sie das Ergebnis:

<?php 
$fileValue = file_get_contents('secondFile.txt'); 

Siehe auch:

+0

Ausgänge "Hallo" ja –

+0

Wow, tolle Antwort, sehr schön;) – Daan

2

EDIT: Ich hatte zunächst angenommen, dass die Ausführung file_get_contents auf ein Skript die Ausgabe (und nicht den Code) greifen würde. Wenn Sie die Ausgang wollen, müssen Sie die vollständige URL angeben:

$str = file_get_contents("http://example.com/demo.php"); 

http://php.net/manual/en/function.file-get-contents.php

Es wäre wahrscheinlich besser, wenn Sie eine der ausführlicheren Antworten akzeptiert.

Auch finden Sie in der unten:

+0

Doh, war es "gibt diesen Wert zurück" als "es enthält nur diese Zeichenfolge"? :) –

+0

mein Verständnis war 'die Ausgabe von demo.php ist die Zeichenfolge "Hallo". – karim79

+0

Aber das würde den gesamten Quellcode von demo.php holen, oder? –

0

Der Text w zurückgegeben hen PHP interpretiert die Seite - das heißt, Sie müssen entweder:

  • Run PHP von der Kommandozeile
  • Oder die Seite über Ihren Webserver nennen - was ist das, was Sie in der Regel zu tun neigen werden.


Im zweiten Fall müssen Sie eine HTTP-Anforderung senden, und das Ergebnis zu holen, die mit file_get_contents(wenn die allow_url_fopen Konfigurationsdirektive aktiviert ist) getan werden kann:

$content = file_get_contents('http://www.yoursite.com/demo.php'); 


Eine andere Lösung, besonders nützlich, wenn allow_url_fopen deaktiviert ist, ist curl; siehe zum Beispiel die Beispiele auf der Seite der curl_exec Funktion.

+0

-1: Verwenden Sie 'file_get_contents()' nicht mit URL. Die empfohlene Einstellung "allow_url_fopen" ist aus Sicherheitsgründen deaktiviert. Es wird empfohlen, dies so zu halten. –

+0

@Andrew: Ich benutze 'file_get_contents' * (und andere Funktionen) * mit URLs und hatte nie Probleme damit ;; 'allow_url_fopen' scheint standardmäßig aktiviert zu sein * (siehe http://www.php.net/manual/en/filesystem.configuration.php) * ;; andererseits würde ich keinen URL-Zugriff für "require"/"include" verwenden, was bedeutet, dass ich die Anweisung "allow_url_include" deaktiviert lassen würde, was auch der Standardwert ist. –

+0

@Pascal MARTIN: Wenn "allow_url_include" deaktiviert ist, kann "allow_url_fopen" Ihre Website auch anfällig für XSS-Angriffe machen, ohne dass die Eingabe richtig validiert wurde. Bitte beachten Sie die folgende Seite über 'allow_url_fopen' auf der ** PHP Security Consortium ** Website: http://phpsec.org/projects/phpsecinfo/tests/allow_url_fopen.html –

2

Was meinen Sie mit "returns hallo"?

Wenn es gibt sie wirklich wie in

return "hello"; 

können Sie den Wert einfach wie diese:

$var = include 'demo.php' 

wenn es echo es, die stattdessen schätzen, können Sie die Ausgabe lesen:

$var = file_get_contents("http://host/demo.php"); 
+0

-1: Verwenden Sie 'file_get_contents()' nicht mit URL. Die empfohlene Einstellung "allow_url_fopen" ist aus Sicherheitsgründen deaktiviert. Es wird empfohlen, dies so zu halten. –

+0

Ich stimme dieser Empfehlung nicht zu, Konfigurationsvariablen sollten nicht nur auf schlechte Entwickler eingestellt werden. 'allow_url_fopen' ist praktisch und schadet nicht. Sie können unsicheren Code schreiben, selbst wenn alle Dinge ausgeschaltet sind. –

1

file_get_contents ist die einfachste Lösung, aber Locke ist viel effizienter. Es ist schneller, sicherer und flexibler.

function file_get_contents_curl($url){ 
    $ch = curl_init(); 
    curl_setopt($ch,CURLOPT_URL,$url); 
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); 
    curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,1); 
    $content = curl_exec($ch); 
    curl_close($ch); 
    return $content; 
} 

$page = file_get_contents_curl('demo.php'); 
Verwandte Themen