|
Posted by Rik on 07/24/07 18:15
On Tue, 24 Jul 2007 19:59:27 +0200, Sander Tekelenburg =
<user@domain.invalid> wrote:
> Situation: I store news articles as individual PHP files. Each file
> contains HTML and now and then some embedded PHP snippets.
>
> Serving those news articles on the Web works fine, through include().
> But I want to also serve them through RSS, and found that in that case=
> the PHP source code is served -- it's not being evaluated.
>
> So it seems obvious that I need to first evaluate those PHP snippets,
> store the result in a variable, and use *that* as the input for the RS=
S
> generator script. I thought that'd be pretty straight-forward, but for=
> the life of me I can't figure out how to do it.
Depends on how you generator script works offcourse... Normally is =
shouldn't be a problem.
> I've experimented with eval() and ob_start() but either I misunderstan=
d
> how to use them, or they're not the right tools for this use.
>
> <http://de.php.net/manual/en/function.eval.php#76339> claims a solutio=
n,
> but it doesn't work for me. (I get no output whatsover using that
> approach.)
Simple eval solution:
The manual says: "To mix HTML output and PHP code you can use a closing =
=
PHP tag to leave PHP mode."
ob_start();
eval('?>'.file_get_contents('file.php').'<?php');
$string =3D ob_get_clean();
Then again, that would basically be the same as:
ob_start();
include('file.php');
$string =3D ob_get_clean();
Which is preferable.
It could be that your RSS-generator only swallows files/urls, and not =
strings? In that case:
//get a unique filename in temporary dir
$file =3D tempnam();
//open file
$fh =3D fopen($file,'w');
//start buffer
ob_start();
//run file
include('file.php');
//write output to temporary file
fwrite($fh,ob_get_clean());
//...And serve the filename $file to your script.
//remove temporary file
unlink($file);
You might get into trouble when the script sets headers though...
More simple solution: if the RSS generator gets urls, just give him the =
=
exact url of the file holding the article.
As you can see, without knowing anything about your RSS generator we're =
=
flying blind here.
-- =
Rik Wasmus
Navigation:
[Reply to this message]
|