如何使用 file_get_contents PHP 回显多个文件的源代码?
How to echo the source code of multiple files using file_get_contents PHP?
<textarea placeholder="Source code of file" class="source">
<?php echo ($thesource) ?>
</textarea>
<?php
$blacklist = array("one.jps", "two.txt", "four.html");
if ($handle = opendir('.')) {
while (false !== ($entry = readdir($handle))) {
if ($entry != "." && $entry != ".." && !in_array($entry, $blacklist)) {
$thesource = file_get_contents($entry);
echo "<div class='post'
<p>$entry</p>
</div>
";
}
}
closedir($handle);
}
?>
输出:
<textarea placeholder="Source code of file" class="source">
<!DOCTYPE html>
<html>
etc
etc
</body>
</html>
</textarea>
<p>ok.html</p>
<p>source.php</p>
<p>sub.html</p>
<p>stylesheet.css</p>
这看起来可能令人困惑,让我试着解释一下我想要实现的目标。
假设目录中有一些文件(在本例中为 4 个)。我正在使用的 PHP 代码会将所有这 4 个文件回显到 PHP 代码所在的页面上 - 它排除了黑名单中的所有内容。所以它看起来有点像这样:
<p>ok.html</p>
<p>source.php</p>
<p>sub.html</p>
<p>stylesheet.css</p>
还有一个文本区域:
<textarea placeholder="Source code of file" class="source">
<?php echo ($thesource) ?>
</textarea>
此文本区域的值为 $thesource。 $thesource 变量中的任何内容都会出现在文本区域中。
要定义 $thesource 变量,这是我正在使用的 PHP 代码:
$thesource = file_get_contents($entry);
请注意,$entry 是回显到页面上的所有文件(如上所述 - 在本例中为 4 个文件)
我正在努力做到这一点,每当用户点击其中一个文件时:
<p>ok.html</p>
<p>source.php</p>
<p>sub.html</p>
<p>stylesheet.css</p>
当用户点击上面列出的那些时,它会在文本区域中显示点击文件的源代码。
我正在使用的当前源代码,仅回显包含 PHP 代码的当前文件的源代码。
我将如何实现这一目标?谢谢 - 如果您仍然不确定我要实现的目标,请询问!
这应该适合你:
首先,我获取目录中 glob()
不在黑名单中的所有文件。之后我打印一个列表,你可以点击它。
如果您单击它,文件将包含并显示在文本区域中。
<?php
$blacklist = array("one.jps", "two.txt", "four.html");
$files = array_diff(glob("*.*"), $blacklist);
foreach($files as $file)
echo "<div class='post'><a href='" . $_SERVER['PHP_SELF'] . "?file=" . $file . "'><p>" . $file . "</p></a></div>";
if(!empty($_GET["file"]) && !in_array($_GET["file"], $blacklist) && file_exists($_GET["file"]))
$thesource = htmlentities(file_get_contents($_GET["file"]));
?>
<textarea rows="40" cols="100" placeholder="Source code of file" class="source"><?php if(!empty($thesource))echo $thesource; ?></textarea>
<textarea placeholder="Source code of file" class="source">
<?php echo ($thesource) ?>
</textarea>
<?php
$blacklist = array("one.jps", "two.txt", "four.html");
if ($handle = opendir('.')) {
while (false !== ($entry = readdir($handle))) {
if ($entry != "." && $entry != ".." && !in_array($entry, $blacklist)) {
$thesource = file_get_contents($entry);
echo "<div class='post'
<p>$entry</p>
</div>
";
}
}
closedir($handle);
}
?>
输出:
<textarea placeholder="Source code of file" class="source">
<!DOCTYPE html>
<html>
etc
etc
</body>
</html>
</textarea>
<p>ok.html</p>
<p>source.php</p>
<p>sub.html</p>
<p>stylesheet.css</p>
这看起来可能令人困惑,让我试着解释一下我想要实现的目标。
假设目录中有一些文件(在本例中为 4 个)。我正在使用的 PHP 代码会将所有这 4 个文件回显到 PHP 代码所在的页面上 - 它排除了黑名单中的所有内容。所以它看起来有点像这样:
<p>ok.html</p>
<p>source.php</p>
<p>sub.html</p>
<p>stylesheet.css</p>
还有一个文本区域:
<textarea placeholder="Source code of file" class="source">
<?php echo ($thesource) ?>
</textarea>
此文本区域的值为 $thesource。 $thesource 变量中的任何内容都会出现在文本区域中。
要定义 $thesource 变量,这是我正在使用的 PHP 代码:
$thesource = file_get_contents($entry);
请注意,$entry 是回显到页面上的所有文件(如上所述 - 在本例中为 4 个文件)
我正在努力做到这一点,每当用户点击其中一个文件时:
<p>ok.html</p>
<p>source.php</p>
<p>sub.html</p>
<p>stylesheet.css</p>
当用户点击上面列出的那些时,它会在文本区域中显示点击文件的源代码。
我正在使用的当前源代码,仅回显包含 PHP 代码的当前文件的源代码。
我将如何实现这一目标?谢谢 - 如果您仍然不确定我要实现的目标,请询问!
这应该适合你:
首先,我获取目录中 glob()
不在黑名单中的所有文件。之后我打印一个列表,你可以点击它。
如果您单击它,文件将包含并显示在文本区域中。
<?php
$blacklist = array("one.jps", "two.txt", "four.html");
$files = array_diff(glob("*.*"), $blacklist);
foreach($files as $file)
echo "<div class='post'><a href='" . $_SERVER['PHP_SELF'] . "?file=" . $file . "'><p>" . $file . "</p></a></div>";
if(!empty($_GET["file"]) && !in_array($_GET["file"], $blacklist) && file_exists($_GET["file"]))
$thesource = htmlentities(file_get_contents($_GET["file"]));
?>
<textarea rows="40" cols="100" placeholder="Source code of file" class="source"><?php if(!empty($thesource))echo $thesource; ?></textarea>