如何防止包含特定字母的单词在PHP中出现回声?
这里发生的事情是检索目录中的所有文件,然后通过PHP将其回送到页面上。如何防止包含特定字母的单词在PHP中出现回声?,php,arrays,directory,echo,glob,Php,Arrays,Directory,Echo,Glob,这里发生的事情是检索目录中的所有文件,然后通过PHP将其回送到页面上。$blacklist中包含的文件是未被回显的文件 但是,我如何更改此设置,以便如果文件名(即要回显的文件名)包含单词末尾的一行字母.txt,那么它将被放入黑名单中,以便不会回显 这有什么意义吗 <?php $blacklist = array("one.jps", "two.txt", "four.html" , ".txt"); $files = array_diff(glob("*.*"), $bl
$blacklist
中包含的文件是未被回显的文件
但是,我如何更改此设置,以便如果文件名(即要回显的文件名)包含单词末尾的一行字母.txt
,那么它将被放入黑名单中,以便不会回显
这有什么意义吗
<?php
$blacklist = array("one.jps", "two.txt", "four.html" , ".txt");
$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"]));
?>
您可以使用正则表达式。还没有玩过语法,所以你必须在这方面下功夫
preg_match('.txt', $string)
假设您想保留$blacklist
以供进一步使用:
$blacklist = preg_grep("/\b.txt\b/", $files);
foreach (array_diff($files, $blacklist) as $whiteListedFile) {
// do your things
}
这就是你需要的。请记住,上面的示例将黑名单“file.txt”,而不是“file.txts”或“file.stxt”。根据您的需要调整模式。是一个很好的PHP在线正则表达式测试工具。除了您面临的问题外,您的代码还面临各种严重的安全风险。。。。文件内容($\u get[“file”])非常危险……你是对的,但我不想为OP做所有的工作。只要给他指出正确的方向就行了。