/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Hent resultatet af php-fil ind i variabel
Fra : Krabsen


Dato : 09-09-10 10:02

Med

$tekstvariabel = file_get_contents('testfil.php');

bliver kildekoden af testfil.php lagt i variablen $tekstvariabel.

Hvis testfil.php indeholder en masse php-kode - hvordan får man så
_resultatet_ af testfil.php ind i $tekstvariabel?


Et svar kan naturligvis være at gøre det i testfil.php, så
print "etellerandet";

erstattes af
$tekstvariabel=$tekstvariabel."etellerandet";

Men det kræver, at man vedligeholder to varianter af testfil.php (fordi
den også skal bruges til sit oprindelige formål), og det vil jeg gerne
undgå.

 
 
Henning (09-09-2010)
Kommentar
Fra : Henning


Dato : 09-09-10 10:31

On 2010-09-09 11:01, Krabsen wrote:
> Med
>
> $tekstvariabel = file_get_contents('testfil.php');
>
> bliver kildekoden af testfil.php lagt i variablen $tekstvariabel.
>
> Hvis testfil.php indeholder en masse php-kode - hvordan får man så
> _resultatet_ af testfil.php ind i $tekstvariabel?

Det enmmeste er at hente den via webserveren:

$tekstvariabel = file_get_contents('http://domain.dk/testfil.php');

- og så lige huske at checke for hvem der har adgang til filen

> Et svar kan naturligvis være at gøre det i testfil.php, så
> print "etellerandet";
>
> erstattes af
> $tekstvariabel=$tekstvariabel."etellerandet";
>
> Men det kræver, at man vedligeholder to varianter af testfil.php (fordi
> den også skal bruges til sit oprindelige formål), og det vil jeg gerne
> undgå.

Så er ovenstående vel den bedste løsning.

Vær lige opmærksom på om den php tillader at du åbner url'er med fopen,
eller virker det nemlig ikke.

/Henning

Krabsen (09-09-2010)
Kommentar
Fra : Krabsen


Dato : 09-09-10 13:26

Den 09-09-2010 11:31, Henning skrev:
> On 2010-09-09 11:01, Krabsen wrote:
>> Med
>>
>> $tekstvariabel = file_get_contents('testfil.php');
>>
>> bliver kildekoden af testfil.php lagt i variablen $tekstvariabel.
>>
>> Hvis testfil.php indeholder en masse php-kode - hvordan får man så
>> _resultatet_ af testfil.php ind i $tekstvariabel?
>
> Det nemmeste er at hente den via webserveren:
>
> $tekstvariabel = file_get_contents('http://domain.dk/testfil.php');

Hm.. Ser desværre ikke ud til at virke - indholdet bliver stadig smidt
på skærmen i stedet for at ende i $tekstvariabel

> Vær lige opmærksom på om den php tillader at du åbner url'er med fopen,
> eller virker det nemlig ikke.

Den er checket..

Bertel Lund Hansen (09-09-2010)
Kommentar
Fra : Bertel Lund Hansen


Dato : 09-09-10 10:51

Krabsen skrev:

> $tekstvariabel = file_get_contents('testfil.php');

> bliver kildekoden af testfil.php lagt i variablen $tekstvariabel.

> Hvis testfil.php indeholder en masse php-kode - hvordan får man så
> _resultatet_ af testfil.php ind i $tekstvariabel?

Jeg er usikker på hvad du mener. Er det rigtigt at du vil kunne
behandle både kildekoden samt filens resultat efter afvikling i
samme PHP-script?

Det kunne evt, klares ved at du lod testfil.php aflæse hvordan
den blev kaldt:

if ($call='normal') dothisandthat();
else $resultvariable='Blablabla...';

Så skal dit aflæseprogram altså dels hente kildekoden cirka som
Henning beskriver og så bagefter kalde testfil.php med
parameteren 'special' - eller hvordan du nu vil lave det.

--
Bertel
http://bertel.lundhansen.dk/         FIDUSO: http://fiduso.dk/

Martin Larsen (09-09-2010)
Kommentar
Fra : Martin Larsen


Dato : 09-09-10 11:03

Bertel Lund Hansen wrote:

> Jeg er usikker på hvad du mener. Er det rigtigt at du vil kunne
> behandle både kildekoden samt filens resultat efter afvikling i
> samme PHP-script?

Mon ikke han egentligt mener en include?

Hvis den inkluderede fil afslutter med en return, kan han hente værdien
ind med include-sætningen:

testfil.php:
$result = "hej verden";
return $result;

hovedprogram:
$tekstvariabel = include 'testfil.php';
echo $tekstvariabel;

Martin

Krabsen (09-09-2010)
Kommentar
Fra : Krabsen


Dato : 09-09-10 12:40

Den 09-09-2010 12:02, Martin Larsen skrev:
> Bertel Lund Hansen wrote:
>
>> Jeg er usikker på hvad du mener. Er det rigtigt at du vil kunne
>> behandle både kildekoden samt filens resultat efter afvikling i
>> samme PHP-script?

Nej, jeg ønsker som skrevet at få filens resultat ind i min variabel -
med file_get_contents får jeg kildekoden..


> Mon ikke han egentligt mener en include?


Jo, til det normale brug anvender jeg include. Og den inkluderede fil
smider så en masse dynamisk genereret html op på skærmen.

Nu vil jeg så gerne - i stedet for at få det smidt på skærm - have det
ind i en variabel, hvor det så kan genbruges (gemmes i tabel, skrives
til fil o.s.v.)

> Hvis den inkluderede fil afslutter med en return, kan han hente værdien
> ind med include-sætningen:
>
> testfil.php:
> $result = "hej verden";
> return $result;
>
> hovedprogram:
> $tekstvariabel = include 'testfil.php';
> echo $tekstvariabel;

problemet er så, at den inkluderede fil _ikke_ afslutter med en return.


Henning (09-09-2010)
Kommentar
Fra : Henning


Dato : 09-09-10 12:57

On 2010-09-09 13:40, Krabsen wrote:
> Den 09-09-2010 12:02, Martin Larsen skrev:
>> Bertel Lund Hansen wrote:
>>
>>> Jeg er usikker på hvad du mener. Er det rigtigt at du vil kunne
>>> behandle både kildekoden samt filens resultat efter afvikling i
>>> samme PHP-script?
>
> Nej, jeg ønsker som skrevet at få filens resultat ind i min variabel -
> med file_get_contents får jeg kildekoden..
>
>
>> Mon ikke han egentligt mener en include?
>
>
> Jo, til det normale brug anvender jeg include. Og den inkluderede fil
> smider så en masse dynamisk genereret html op på skærmen.
>
> Nu vil jeg så gerne - i stedet for at få det smidt på skærm - have det
> ind i en variabel, hvor det så kan genbruges (gemmes i tabel, skrives
> til fil o.s.v.)

Så brug den løsning jeg skrev om senere. Det er måske ikke en helt så
elegant løsning, men den vil løse dit problem.

Bruger i øvrigt selv lignende setup i forbindelse med overførsel af data
mellem forskellige servere

/Henning

Krabsen (09-09-2010)
Kommentar
Fra : Krabsen


Dato : 09-09-10 13:04

Den 09-09-2010 13:56, Henning skrev:
> On 2010-09-09 13:40, Krabsen wrote:
>> Den 09-09-2010 12:02, Martin Larsen skrev:
>>> Bertel Lund Hansen wrote:
>>>
>>>> Jeg er usikker på hvad du mener. Er det rigtigt at du vil kunne
>>>> behandle både kildekoden samt filens resultat efter afvikling i
>>>> samme PHP-script?
>>
>> Nej, jeg ønsker som skrevet at få filens resultat ind i min variabel -
>> med file_get_contents får jeg kildekoden..
>>
>>
>>> Mon ikke han egentligt mener en include?
>>
>> Jo, til det normale brug anvender jeg include. Og den inkluderede fil
>> smider så en masse dynamisk genereret html op på skærmen.
>>
>> Nu vil jeg så gerne - i stedet for at få det smidt på skærm - have det
>> ind i en variabel, hvor det så kan genbruges (gemmes i tabel, skrives
>> til fil o.s.v.)
>
> Så brug den løsning jeg skrev om senere. Det er måske ikke en helt så
> elegant løsning, men den vil løse dit problem.


Jeps - jeg havde set dit første indlæg, men nu faldt 10-øren.

Tilladelse til 'URL file-access' er naturligvis en udfordring, men det
må afprøves..
Jeg kan heller ikke lige gennemskue, om der bliver bøvl med Cookies, men
det burde kunne gå..



Martin Larsen (09-09-2010)
Kommentar
Fra : Martin Larsen


Dato : 09-09-10 13:22

Krabsen wrote:

> problemet er så, at den inkluderede fil _ikke_ afslutter med en return.

Så du echo'er en masse til skærmen og vil i stedet have det ind i en
variabel?

Det gør du sådan her....

testfil.php:
<?php
ob_start(); // Gemmner al skærmoutput i en buffer
<resten af filen>
return ob_get_clean(); // returnerer nu det du har skrevet til skærmen
?>

Og i hovedfilen:

$tekstvariabel = include 'testfil.php';
echo $tekstvariabel;


Du kan også gøre som Henning foreslår, dette er dog en kende mere
effektivt plus at det har nogle andre fordele, såsom at du har adgang
til query-strengen i include-filen osv.

Hilsen
Martin

Martin Larsen (09-09-2010)
Kommentar
Fra : Martin Larsen


Dato : 09-09-10 13:24

Martin Larsen wrote:

> Det gør du sådan her....

Jeg går ud fra at du har adgang til filen og således kan indsætte de to
linjer som vist.

Krabsen (09-09-2010)
Kommentar
Fra : Krabsen


Dato : 09-09-10 14:57

Den 09-09-2010 14:22, Martin Larsen skrev:
> Krabsen wrote:
>
>> problemet er så, at den inkluderede fil _ikke_ afslutter med en return.
>
> Så du echo'er en masse til skærmen og vil i stedet have det ind i en
> variabel?
>
> Det gør du sådan her....
>
> testfil.php:
> <?php
> ob_start(); // Gemmer al skærmoutput i en buffer
> <resten af filen>
> return ob_get_clean(); // returnerer nu det du har skrevet til skærmen
> ?>
>
> Og i hovedfilen:
>
> $tekstvariabel = include 'testfil.php';
> echo $tekstvariabel;

Det virker.. - jeg har dog forbedret det lidt ved at placere

ob_start();

og

ob_get_clean();

i hovedfilen - for så kan jeg udskifte include-filen dynamisk (hvilket
jeg har brug for - der er op til 20 af slagsen).


manne tak til alle hjælpere..

Martin Larsen (09-09-2010)
Kommentar
Fra : Martin Larsen


Dato : 09-09-10 15:01

Krabsen wrote:

> Det virker.. - jeg har dog forbedret det lidt ved at placere
> ob_start();
> ob_get_clean();
> i hovedfilen - for så kan jeg udskifte include-filen dynamisk (hvilket
> jeg har brug for - der er op til 20 af slagsen).

Ja, det er også en bedre løsning i det hele taget så du ikke skal ændre
i filerne. Og du behøver du heller ikke en return-sætning i include-filerne.

Godt at det virkede!

Martin

Søg
Reklame
Statistik
Spørgsmål : 177579
Tips : 31968
Nyheder : 719565
Indlæg : 6409073
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste