Php 输出:如果与模式不匹配,则文件不可用
代码如下:Php 输出:如果与模式不匹配,则文件不可用,php,file,foreach,scandir,Php,File,Foreach,Scandir,代码如下: $course = htmlspecialchars($_GET["course"]); $db = odbc_connect('#'); // Course Heading $courseheading = "SELECT * FROM tbsessions, tbcourses, tbpresentations WHERE (tbsessions.courseId = tbcou
$course = htmlspecialchars($_GET["course"]);
$db = odbc_connect('#');
// Course Heading
$courseheading = "SELECT *
FROM tbsessions, tbcourses, tbpresentations
WHERE (tbsessions.courseId = tbcourses.courseId)
AND (tbpresentations.courseSessionId = tbsessions.courseSessionId)
AND (tbsessions.courseSessionID = '$course')
AND (tbsessions.category NOT IN ('M','S'))
ORDER BY startDate DESC, courseTitle";
$courseRS = odbc_exec($db, $courseheading);
$courseTitle = odbc_result($courseRS, "courseTitle");
$subtitle = odbc_result($courseRS, "subtitle");
echo '<div class="title">
<h1>'.$courseTitle.'</h1>
<p>'.$subtitle.'</p></div>';
// Presentation Information
$query = "SELECT *
FROM tbspeakers s join tbpresentations p on
s.spkrId = p.spkrId
join tbsessions ss on
p.courseSessionid = ss.courseSessionId
join tbcourses c on
ss.courseId = c.courseId
WHERE (ss.courseSessionID = '$course')
ORDER BY pTitle";
$result = odbc_exec($db, $query);
// Generate presentation and speaker information
while(odbc_fetch_row($result)){
$courseTitle = odbc_result($result, "courseTitle");
$subtitle = odbc_result($result, "subtitle");
$pTitle = odbc_result($result, "pTitle");
$fname = odbc_result($result, "fname");
$lname = odbc_result($result, "lname");
$degree = odbc_result($result, "degree");
$pSDateTime = odbc_result($result, "pSDateTime");
echo '<p><strong>'.$pTitle. '</strong> - ' . $fname . ' ' . $lname . ', ' . $degree . '</p>';
$courseTitle = explode(" ", $courseTitle);
$course = "";
$courseTitle = preg_replace('/\(|\)/', '', $courseTitle);
foreach ($courseTitle as $value) {
$course .= substr($value, 0, 2);
}
$pSDateTime = str_replace('-', '', $pSDateTime);
$pSDateTime = str_replace(':', '', $pSDateTime);
$pSDateTime = str_replace(' ', '_', $pSDateTime);
$pSDateTime = substr($pSDateTime, 0, -2);
$presentation = strToLower($course). '_' .$pSDateTime;
// Generate presentation download link
$dir = '../assets/training/archive';
$files = scandir($dir);
$imgarray = array();
foreach($files as $file) {
if(fnmatch($presentation.'.*',$file)) {
$imgarray[] = $file;
}
}
foreach($imgarray as $download) {
if(isset($download)) {
echo '<p><a href="/assets/training/archive/'.$download.'">Download</a></p> <br><br>';
}
else {
echo 'File Not Available';
}
}
}
?>
任务:
$course = htmlspecialchars($_GET["course"]);
$db = odbc_connect('#');
// Course Heading
$courseheading = "SELECT *
FROM tbsessions, tbcourses, tbpresentations
WHERE (tbsessions.courseId = tbcourses.courseId)
AND (tbpresentations.courseSessionId = tbsessions.courseSessionId)
AND (tbsessions.courseSessionID = '$course')
AND (tbsessions.category NOT IN ('M','S'))
ORDER BY startDate DESC, courseTitle";
$courseRS = odbc_exec($db, $courseheading);
$courseTitle = odbc_result($courseRS, "courseTitle");
$subtitle = odbc_result($courseRS, "subtitle");
echo '<div class="title">
<h1>'.$courseTitle.'</h1>
<p>'.$subtitle.'</p></div>';
// Presentation Information
$query = "SELECT *
FROM tbspeakers s join tbpresentations p on
s.spkrId = p.spkrId
join tbsessions ss on
p.courseSessionid = ss.courseSessionId
join tbcourses c on
ss.courseId = c.courseId
WHERE (ss.courseSessionID = '$course')
ORDER BY pTitle";
$result = odbc_exec($db, $query);
// Generate presentation and speaker information
while(odbc_fetch_row($result)){
$courseTitle = odbc_result($result, "courseTitle");
$subtitle = odbc_result($result, "subtitle");
$pTitle = odbc_result($result, "pTitle");
$fname = odbc_result($result, "fname");
$lname = odbc_result($result, "lname");
$degree = odbc_result($result, "degree");
$pSDateTime = odbc_result($result, "pSDateTime");
echo '<p><strong>'.$pTitle. '</strong> - ' . $fname . ' ' . $lname . ', ' . $degree . '</p>';
$courseTitle = explode(" ", $courseTitle);
$course = "";
$courseTitle = preg_replace('/\(|\)/', '', $courseTitle);
foreach ($courseTitle as $value) {
$course .= substr($value, 0, 2);
}
$pSDateTime = str_replace('-', '', $pSDateTime);
$pSDateTime = str_replace(':', '', $pSDateTime);
$pSDateTime = str_replace(' ', '_', $pSDateTime);
$pSDateTime = substr($pSDateTime, 0, -2);
$presentation = strToLower($course). '_' .$pSDateTime;
// Generate presentation download link
$dir = '../assets/training/archive';
$files = scandir($dir);
$imgarray = array();
foreach($files as $file) {
if(fnmatch($presentation.'.*',$file)) {
$imgarray[] = $file;
}
}
foreach($imgarray as $download) {
if(isset($download)) {
echo '<p><a href="/assets/training/archive/'.$download.'">Download</a></p> <br><br>';
}
else {
echo 'File Not Available';
}
}
}
?>
我试图只抓取与演示文稿匹配的文件。不应考虑所有其他文件,这样,如果未找到匹配项,则会显示文件不可用。如果要知道数组是否为空,只需添加一个:
$course = htmlspecialchars($_GET["course"]);
$db = odbc_connect('#');
// Course Heading
$courseheading = "SELECT *
FROM tbsessions, tbcourses, tbpresentations
WHERE (tbsessions.courseId = tbcourses.courseId)
AND (tbpresentations.courseSessionId = tbsessions.courseSessionId)
AND (tbsessions.courseSessionID = '$course')
AND (tbsessions.category NOT IN ('M','S'))
ORDER BY startDate DESC, courseTitle";
$courseRS = odbc_exec($db, $courseheading);
$courseTitle = odbc_result($courseRS, "courseTitle");
$subtitle = odbc_result($courseRS, "subtitle");
echo '<div class="title">
<h1>'.$courseTitle.'</h1>
<p>'.$subtitle.'</p></div>';
// Presentation Information
$query = "SELECT *
FROM tbspeakers s join tbpresentations p on
s.spkrId = p.spkrId
join tbsessions ss on
p.courseSessionid = ss.courseSessionId
join tbcourses c on
ss.courseId = c.courseId
WHERE (ss.courseSessionID = '$course')
ORDER BY pTitle";
$result = odbc_exec($db, $query);
// Generate presentation and speaker information
while(odbc_fetch_row($result)){
$courseTitle = odbc_result($result, "courseTitle");
$subtitle = odbc_result($result, "subtitle");
$pTitle = odbc_result($result, "pTitle");
$fname = odbc_result($result, "fname");
$lname = odbc_result($result, "lname");
$degree = odbc_result($result, "degree");
$pSDateTime = odbc_result($result, "pSDateTime");
echo '<p><strong>'.$pTitle. '</strong> - ' . $fname . ' ' . $lname . ', ' . $degree . '</p>';
$courseTitle = explode(" ", $courseTitle);
$course = "";
$courseTitle = preg_replace('/\(|\)/', '', $courseTitle);
foreach ($courseTitle as $value) {
$course .= substr($value, 0, 2);
}
$pSDateTime = str_replace('-', '', $pSDateTime);
$pSDateTime = str_replace(':', '', $pSDateTime);
$pSDateTime = str_replace(' ', '_', $pSDateTime);
$pSDateTime = substr($pSDateTime, 0, -2);
$presentation = strToLower($course). '_' .$pSDateTime;
// Generate presentation download link
$dir = '../assets/training/archive';
$files = scandir($dir);
$imgarray = array();
foreach($files as $file) {
if(fnmatch($presentation.'.*',$file)) {
$imgarray[] = $file;
}
}
foreach($imgarray as $download) {
if(isset($download)) {
echo '<p><a href="/assets/training/archive/'.$download.'">Download</a></p> <br><br>';
}
else {
echo 'File Not Available';
}
}
}
?>
<html>
<body>
<?php
$dir = "../assets/training/archive";
$files = scandir($dir);
$imgarray = array();
$presentation = '*.php'; // ENTER ANY FILENAME OR PATTERN HERE.
foreach($files as $file)
if(fnmatch($presentation,$file))
$imgarray[] = $file;
if ( count( $imgarray ) == 0 ) // NO MATCHES.
echo 'No files available';
else foreach($imgarray as $download)
echo '<p><a href="/assets/training/archive/'.$download.'">Download</a></p> <br><br>';
?>
</body>
</html>
如果这是您需要的,请告诉我。这应该适合您:
$course = htmlspecialchars($_GET["course"]);
$db = odbc_connect('#');
// Course Heading
$courseheading = "SELECT *
FROM tbsessions, tbcourses, tbpresentations
WHERE (tbsessions.courseId = tbcourses.courseId)
AND (tbpresentations.courseSessionId = tbsessions.courseSessionId)
AND (tbsessions.courseSessionID = '$course')
AND (tbsessions.category NOT IN ('M','S'))
ORDER BY startDate DESC, courseTitle";
$courseRS = odbc_exec($db, $courseheading);
$courseTitle = odbc_result($courseRS, "courseTitle");
$subtitle = odbc_result($courseRS, "subtitle");
echo '<div class="title">
<h1>'.$courseTitle.'</h1>
<p>'.$subtitle.'</p></div>';
// Presentation Information
$query = "SELECT *
FROM tbspeakers s join tbpresentations p on
s.spkrId = p.spkrId
join tbsessions ss on
p.courseSessionid = ss.courseSessionId
join tbcourses c on
ss.courseId = c.courseId
WHERE (ss.courseSessionID = '$course')
ORDER BY pTitle";
$result = odbc_exec($db, $query);
// Generate presentation and speaker information
while(odbc_fetch_row($result)){
$courseTitle = odbc_result($result, "courseTitle");
$subtitle = odbc_result($result, "subtitle");
$pTitle = odbc_result($result, "pTitle");
$fname = odbc_result($result, "fname");
$lname = odbc_result($result, "lname");
$degree = odbc_result($result, "degree");
$pSDateTime = odbc_result($result, "pSDateTime");
echo '<p><strong>'.$pTitle. '</strong> - ' . $fname . ' ' . $lname . ', ' . $degree . '</p>';
$courseTitle = explode(" ", $courseTitle);
$course = "";
$courseTitle = preg_replace('/\(|\)/', '', $courseTitle);
foreach ($courseTitle as $value) {
$course .= substr($value, 0, 2);
}
$pSDateTime = str_replace('-', '', $pSDateTime);
$pSDateTime = str_replace(':', '', $pSDateTime);
$pSDateTime = str_replace(' ', '_', $pSDateTime);
$pSDateTime = substr($pSDateTime, 0, -2);
$presentation = strToLower($course). '_' .$pSDateTime;
// Generate presentation download link
$dir = '../assets/training/archive';
$files = scandir($dir);
$imgarray = array();
foreach($files as $file) {
if(fnmatch($presentation.'.*',$file)) {
$imgarray[] = $file;
}
}
foreach($imgarray as $download) {
if(isset($download)) {
echo '<p><a href="/assets/training/archive/'.$download.'">Download</a></p> <br><br>';
}
else {
echo 'File Not Available';
}
}
}
?>
在这里,我首先从您的目录中获取所有已排除的文件。和然后我过滤掉所有与模式不匹配的文件。最后,我简单地遍历所有文件,检查当前文件是否与模式匹配,是否在过滤数组中,或者是否
$course = htmlspecialchars($_GET["course"]);
$db = odbc_connect('#');
// Course Heading
$courseheading = "SELECT *
FROM tbsessions, tbcourses, tbpresentations
WHERE (tbsessions.courseId = tbcourses.courseId)
AND (tbpresentations.courseSessionId = tbsessions.courseSessionId)
AND (tbsessions.courseSessionID = '$course')
AND (tbsessions.category NOT IN ('M','S'))
ORDER BY startDate DESC, courseTitle";
$courseRS = odbc_exec($db, $courseheading);
$courseTitle = odbc_result($courseRS, "courseTitle");
$subtitle = odbc_result($courseRS, "subtitle");
echo '<div class="title">
<h1>'.$courseTitle.'</h1>
<p>'.$subtitle.'</p></div>';
// Presentation Information
$query = "SELECT *
FROM tbspeakers s join tbpresentations p on
s.spkrId = p.spkrId
join tbsessions ss on
p.courseSessionid = ss.courseSessionId
join tbcourses c on
ss.courseId = c.courseId
WHERE (ss.courseSessionID = '$course')
ORDER BY pTitle";
$result = odbc_exec($db, $query);
// Generate presentation and speaker information
while(odbc_fetch_row($result)){
$courseTitle = odbc_result($result, "courseTitle");
$subtitle = odbc_result($result, "subtitle");
$pTitle = odbc_result($result, "pTitle");
$fname = odbc_result($result, "fname");
$lname = odbc_result($result, "lname");
$degree = odbc_result($result, "degree");
$pSDateTime = odbc_result($result, "pSDateTime");
echo '<p><strong>'.$pTitle. '</strong> - ' . $fname . ' ' . $lname . ', ' . $degree . '</p>';
$courseTitle = explode(" ", $courseTitle);
$course = "";
$courseTitle = preg_replace('/\(|\)/', '', $courseTitle);
foreach ($courseTitle as $value) {
$course .= substr($value, 0, 2);
}
$pSDateTime = str_replace('-', '', $pSDateTime);
$pSDateTime = str_replace(':', '', $pSDateTime);
$pSDateTime = str_replace(' ', '_', $pSDateTime);
$pSDateTime = substr($pSDateTime, 0, -2);
$presentation = strToLower($course). '_' .$pSDateTime;
// Generate presentation download link
$dir = '../assets/training/archive';
$files = scandir($dir);
$imgarray = array();
foreach($files as $file) {
if(fnmatch($presentation.'.*',$file)) {
$imgarray[] = $file;
}
}
foreach($imgarray as $download) {
if(isset($download)) {
echo '<p><a href="/assets/training/archive/'.$download.'">Download</a></p> <br><br>';
}
else {
echo 'File Not Available';
}
}
}
?>
<?php
$dir = "../assets/training/archive";
$files = glob("$dir/*.*");
$filteredFiles = array_filter($files, function($v)use($presentation){
return fnmatch($presentation.'.*', $v);
});
foreach($files as $file) {
if(in_array($file, $filteredFiles))
echo "<p><a href='/assets/training/archive/'". $file . "'>Download</a></p><br><br>";
else
echo "File Not Available";
}
?>
为什么scandir读数会包含一个不存在的文件?。。下面是我们没有的随机文件列表。一个问题,用户4771351:如果文件夹有50个文件,并且只有10个与模式匹配,您想显示10个链接和40个文件不可用吗?是这样吗?Jose我的意图是,如果找不到特定的文件,则只显示一次“文件不可用”。若它找到了10,那个么它应该输出10,若它并没有找到任何东西,它应该输出一次不可用的文件。我想我要取消删除它,让你看看。Rizier昨天踢了我的屁股想得到我的答案,但可能对你有用,用户4771351。如果设置$download,这完全是多余的,而且OP的当前代码显示他的代码毫无意义,因为他试图知道是否正确检索了文件数据,在这种情况下,数组位置将为空。这没有什么区别,只是完全没有意义!伪代码:foreach$array作为$element如果循环的当前元素已设置,那么foreach$array作为$element如果循环的当前元素已设置,那么foreach$array作为$element显示,如果循环的当前元素已设置,那么以其他方式显示它不可用。^?如果你在数组中循环,每个元素都会被设置,否则它就不会在数组中了?!评论不用于扩展讨论;这段对话已经结束。