2015-08-28 174 views
0

我在網上找到了一個php搜索腳本,對我很好。即時通訊雖然有大小寫敏感的問題。這個搜索鏈接到一個html表單輸入,並且只會返回匹配搜索到的結果。有沒有解決的辦法?區分大小寫

<?php 
    ////////////////////// 
    // © Nadav Ami 2009 // 
//  Version 1.2 // 
//  Edited By // 
// Geoff Bolton // 
////////////////////// 


function scandir_r($dir){ 
$files = array_diff(scandir($dir), array(".", "..")); 
$arr = array(); 
    foreach($files as $file){ 
    $arr[] = $dir.DIRECTORY_SEPARATOR.$file; 
     if(is_dir($dir.DIRECTORY_SEPARATOR.$file)){ 
     $arr = array_merge($arr, scandir_r($dir.DIRECTORY_SEPARATOR.$file)); 
     } 
    } 
return($arr); 
} 

$dirname = "./"; 
$findme = "/".preg_quote($_POST["search"], "/")."/"; 
$files = preg_grep($findme, scandir_r($dirname)); 
if(sizeof($files)){ 
    foreach($files as $file){ 
    $_file = $dirname.DIRECTORY_SEPARATOR.$file; 
    echo "<a href=\"$_file\">$file</a><br/>"; 
    } 
} 
else{ 
echo "Nothing was found."; 
} 
?> 
+0

你有['strtoupper'(http://php.net/manual/en/function.strtoupper.php),['strtolower'(HTTP:// php.net/manual/en/function.strtolower.php),當然還有客戶端的JS。 –

+0

感謝您的快速回復,我完全不知道php。 –

+0

不客氣:) –

回答

1

您可以使用不區分大小寫的搜索。它在preg_match的第一個示例(http://php.net/manual/en/function.preg-match.php)中進行了演示,並且也適用於preg_grep。所以這應該做的伎倆:

// [...] 
$findme = "/".preg_quote($_POST["search"], "/")."/i"; 
// [...] 
+0

感謝您的幫助!工作完美。我遇到的另一個問題是文件被索引時,它們包括例如home/images/image.png的完整文件路徑。有沒有辦法省略這個,所以它的結果「image.png」我看着basename函數,但不能實現它 –

+0

這是一個完全不同的問題,我沒有嘗試過,但我認爲你可以使用'basename()'函數來解決它:'echo「".basename($file)."
\ n」;'。如果這不是你想要的,我建議在一個新問題中提出這個問題。 – skroczek