iT邦幫忙

0

如何撰寫多條件符合搜尋檔案名稱的網頁

小弟想寫個搜尋文件pdf的功能,目前可寫到單層搜尋
但如果要多個條件時(用空白隔做分行),該如何撰寫呢??

<?php      

header("content-type:text/html; charset=utf-8");
$FileDir = dirname($_SERVER["SCRIPT_FILENAME"]);  

if (!$_POST){$FilePDF=glob("$FileDir/*.pdf");}
	else {$FilePDF=glob("$FileDir/*".$_POST["search"]."*.pdf");}
?>

<form id="Search" action="TCReportSearch.php" method="post">
<input name="search" type="text" class="form-control" placeholder="輸入搜尋關鍵字(僅限英文字搜尋)" aria-describedby="addon1">
               
</form>
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
海綿寶寶
iT邦大神 1 級 ‧ 2017-01-10 21:34:58
<?php      

header("content-type:text/html; charset=utf-8");
$FileDir = dirname($_SERVER["SCRIPT_FILENAME"]);  

$keyword = $_POST["search"];

if (!$_POST) {
   $FilePDF=glob("$FileDir/*.pdf");
} else {
//   $FilePDF=glob("$FileDir/*".$_POST["search"]."*.pdf");
   $allFilePDF=glob("$FileDir/*.pdf");
   $FilePDF = array_filter($allFilePDF, "searchstr");
}

function searchstr($var) {
   global $keyword;
   
   $bRet = false;
   $arrKeyword = explode(" ", $keyword);
   
   foreach ($arrKeyword as $Key => $Value) {
   	if (strpos($var, $Value) === false) {
   	} else {
		$bRet = true;
   	}
   }
   return $bRet;
}

?>

<form id="Search" action="TCReportSearch.php" method="post">
<input name="search" type="text" class="form-control" placeholder="輸入搜尋關鍵字(僅限英文字搜尋)" aria-describedby="addon1">
               
</form>

請教一下
您是學生寫作業
還是上班工作寫程式
/images/emoticon/emoticon19.gif

看更多先前的回應...收起先前的回應...
lichang iT邦新手 5 級 ‧ 2017-01-10 21:41:56 檢舉

謝謝大大回答,我們是公司用,不過只是臨時要寫個網頁用而已,所以不是本科系,常問些無聊問題,不好意思

明白了
沒問題

lichang iT邦新手 5 級 ‧ 2017-01-11 09:21:47 檢舉

大大請問一下,這function迴圈好像只判斷到(只要有一個符合就送出$bRet)是不,我希望是全部符合才送出,不好意思再麻煩指點一下

原本預設值是false(只要有一個符合就算true)
現在改成
預設值是true(只要有一個找不到就算false)
修改如下
加減用

function searchstr($var) {
   global $keyword;
   
   $bRet = true;
   $arrKeyword = explode(" ", $keyword);
   
   foreach ($arrKeyword as $Key => $Value) {
   	if (strpos($var, $Value) === false) {
        $bRet = false;
   	}
   }
   return $bRet;
}
lichang iT邦新手 5 級 ‧ 2017-01-11 09:38:37 檢舉

太強了,謝謝大大指導
另外,我把strpos改成stripos以後可以不分大小寫搜尋
但是如果是中文就沒辦法搜尋,這有救嗎??

php 當然可以搜尋中文字串
不過我沒有跟你一樣的環境可以測試
你可以先 Google 「php strpos 中文」
先自己試著改改看
如果仍然不行
再發一個問題
「php 如何使用 strpos 搜尋中文」
並且把你改的不work的程式碼貼上來
再看看其他的php高手來回答

我要發表回答

立即登入回答