以不区分大小写的方式搜索文件?
Search for files in a case insensitive manner?
我有以下代码 以递归方式在我的 apache 服务器中查找文件:
<?php
if(isset($_GET['q'])) {
$query = $_GET['q'];
foreach (glob("*/*{$query}*") as $filename) {
echo "<th class=\"icon\"><img src=\"/.res/save.png\"></th><th><a href=\"{$filename}\">{$filename}</a><th class=\"desc\"><a href=\"#open-modal\" onclick=\"loadDoc('{$filename}')\"><img src=\"/.res/info.png\"></a></th></tr>";
}
}
?>
因此,当我在地址栏中键入以下内容时:http://mywebsite.org/file.php?q=File+Name
,我得到了名为 "File Name.whatever" 的服务器中所有文件的列表。遗憾的是,当我请求 "fILE nAme" 时,它没有找到它,因为它的大小写敏感。
我也试过下面的代码:
<?php
if(isset($_GET['q'])) {
$query = $_GET['q'];
$cmd2 = shell_exec("find . \( ! -regex '.*/\..*' \) -type f -iname \"*{$query}*\"");
$divide2 = explode("./", $cmd2);
unset($divide2[0]);
if(empty($divide2))
echo "<center><p>No results for: \"{$query}\".</p></center>";
else foreach( $divide2 as $path2 ) { echo "<th class=\"icon\"><img src=\"/.res/save.png\"></th><th><a href=\"{$path2}\">{$path2}</a></th></tr>";
}
}
?>
它以不区分大小写的方式搜索文件。 (耶!),但我真的很担心安全问题,因为我允许用户在 shell 命令中输入他们想要的任何内容……他们可以输入 && destroy-server
哈哈
我仍在寻找答案,但如果这里有人知道如何解决我的问题,我会非常高兴!
干杯。
$split=str_split($_GET['q']);//split each letter
$query='';
foreach($split as $b){ //loop
if(ctype_alpha($b)){//check its a letter
$query.='['.strtoupper($b).strtolower($b).']';//build upercase\lower case pair
}else{//if not a letter use raw version
$query.=$b;
}
}
那么你已经有了..
foreach (glob("{$query}") as $filename) {
我有以下代码 以递归方式在我的 apache 服务器中查找文件:
<?php
if(isset($_GET['q'])) {
$query = $_GET['q'];
foreach (glob("*/*{$query}*") as $filename) {
echo "<th class=\"icon\"><img src=\"/.res/save.png\"></th><th><a href=\"{$filename}\">{$filename}</a><th class=\"desc\"><a href=\"#open-modal\" onclick=\"loadDoc('{$filename}')\"><img src=\"/.res/info.png\"></a></th></tr>";
}
}
?>
因此,当我在地址栏中键入以下内容时:http://mywebsite.org/file.php?q=File+Name
,我得到了名为 "File Name.whatever" 的服务器中所有文件的列表。遗憾的是,当我请求 "fILE nAme" 时,它没有找到它,因为它的大小写敏感。
我也试过下面的代码:
<?php
if(isset($_GET['q'])) {
$query = $_GET['q'];
$cmd2 = shell_exec("find . \( ! -regex '.*/\..*' \) -type f -iname \"*{$query}*\"");
$divide2 = explode("./", $cmd2);
unset($divide2[0]);
if(empty($divide2))
echo "<center><p>No results for: \"{$query}\".</p></center>";
else foreach( $divide2 as $path2 ) { echo "<th class=\"icon\"><img src=\"/.res/save.png\"></th><th><a href=\"{$path2}\">{$path2}</a></th></tr>";
}
}
?>
它以不区分大小写的方式搜索文件。 (耶!),但我真的很担心安全问题,因为我允许用户在 shell 命令中输入他们想要的任何内容……他们可以输入 && destroy-server
哈哈
我仍在寻找答案,但如果这里有人知道如何解决我的问题,我会非常高兴! 干杯。
$split=str_split($_GET['q']);//split each letter
$query='';
foreach($split as $b){ //loop
if(ctype_alpha($b)){//check its a letter
$query.='['.strtoupper($b).strtolower($b).']';//build upercase\lower case pair
}else{//if not a letter use raw version
$query.=$b;
}
}
那么你已经有了..
foreach (glob("{$query}") as $filename) {