0

我想将文件写入文件,并且该文件包含一些 PHP 代码。当有人读取文件时,我不希望文件运行 PHP。基本上,我想要<?php和之间的所有文本?>,以及那些标签。有没有办法在 PHP 中做到这一点?可能与strpos? 我尝试使用 strpos;但我想不通。

这是一个例子:

<?php
echo "This is the PHP I want removed!";
?>
<html>
<p>This is what I want written to a file!</p>
</html>
4

3 回答 3

7

最简单的方法可能是使用 解析文件token_get_all,遍历结果并丢弃所有非 type 的内容T_INLINE_HTML

于 2011-11-24T23:27:36.147 回答
1

如果您可以选择要写入的文件名,则可以写入 .phps 文件,该文件不会被评估为 PHP。如果访问者查看 .phps 页面,他们将获得一个明文文件,其中包括<?php ?>标签内的所有内容以及 HTML。

于 2011-11-24T23:29:04.200 回答
1

如果你的<?php ?>标签总是在你的输入文件的顶部,你可以分解输入并将标签周围的所有内容写入输出:

输入:

<?php echo "This is the PHP I want removed!"; ?>
<html> 
    <p>This is what I want written to a file!</p> 
</html>

代码:

$inputTxt = file_get_contents($path . $file , NULL, NULL);

$begin = explode("<?php", $inputTxt);
$end = explode('?>', $inputTxt);
fwrite($output,  $begin[0] . $end[1] . "\n\n");
?>

输出:

<?php
echo "This is the PHP I want removed!";
?>
<html>
<p>This is what I want written to a file!</p>
</html>

<html>
<p>This is what I want written to a file!</p>
</html>

但是,如果您计划拥有一组以上的<?php ?>标签,那么您需要使用 preg_match:

输入:

<?php
echo "This is the PHP I want removed!";
?>
<html>
    <p>This is <?php echo $something; ?> I want written to a file!</p>
</html>

代码:

<?php
$file="input.txt";
$path='C:\\input\\';
$output = fopen($path . "output.txt",'w');

$inputTxt = file_get_contents($path . $file , NULL, NULL);

$pattern = '/<\?php.+\?>/isU';
$replace = '';

$newInput = preg_replace($pattern, $replace, $inputTxt);

fwrite($output,  $newInput);
?>

输出:

<?php
echo "This is the PHP I want removed!";
?>
<html>
<p>This is <?php echo $something; ?> I want written to a file!</p>
</html>

<html>
<p>This is  I want written to a file!</p>
</html>
于 2011-11-25T01:52:08.323 回答