使用大写+小写混合词的文件夹中的递归搜索?

时间:2014-11-23 11:50:58

标签: php regex search recursion preg-match-all

大家好,我有很多搜索,我试图让它工作。 以下脚本将文件递归搜索到所有文件夹中。

if(isset($_POST['cmdsearch']))
{
$search = $_POST['search'];
    if (@get_magic_quotes_gpc())
    {
    $search = stripslashes($search);
    }
$it = new RecursiveDirectoryIterator("jpg");

foreach(new RecursiveIteratorIterator($it) as $file) 
    {
       if (false !== stripos($file, $search))
       {

       echo "<a style='padding:10px 10px 5px 5px; text-decoration:none; line-height:15px;' class='smamal' target='_blank' href='http://www.domain.com/files/";
       echo $file;
       echo "'>";
       echo "www.domain.gr/files/";
       echo $file;
       echo "</a>";
       echo "<br />";
       }
   }  
}
else
{
echo "<p></p>";
}

我想补充的内容:

  1. [重要]我想在文件中搜索Upper&amp;小写字母。 例如:现在,如果你搜索&#34;喝&#34;它只给&#34;饮料&#34; 不是&#34;喝&#34;。
  2. 此外,如果可以搜索给定的4个首字母 单词示例:搜索&#34;耳机&#34;结果=&#34;耳机&#34; &#34;标题&#34; &#34;无头&#34;等...
  3. 我正在尝试添加类似这样的代码

    /\b([a-z]+[A-Z]+[a-zA-Z]*|[A-Z]+[a-z]+[a-zA-Z]*)\b/
    
    谢谢你的时间。

2 个答案:

答案 0 :(得分:0)

为什么不将搜索和文件名转换为小写。这样您将获得不区分大小写的匹配。另一个选项是在正则表达式中为不区分大小写的匹配设置标志i。为了匹配前四个字符,请在比较它们之前在两个字符串上使用substr

如果您真的搜索大型数据集,请考虑使用类似弹性搜索的内容。这甚至可以为您提供模糊搜索(例如,空格线也将返回标题的结果)。

http://www.elasticsearch.org/

答案 1 :(得分:0)

我认为这是我需要嵌入代码中的内容。一个函数来转换所有重音字符然后使它们小写。 在FILENAME和SEARCH中,但我不知道如何嵌入它。请帮忙吗?

function normaliza ($string){ 
    $a = 'ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ 
ßàáâãäåæçèéêëìíîïðñòóôõöøùúûýýþÿŔŕ'; 
    $b = 'aaaaaaaceeeeiiiidnoooooouuuuy 
bsaaaaaaaceeeeiiiidnoooooouuuyybyRr'; 
    $string = utf8_decode($string);     
    $string = strtr($string, utf8_decode($a), $b); 
    $string = strtolower($string); 
    return utf8_encode($string); 
}