【问题标题】:Alternative function for php deprecated sql_regcase()php 的替代函数已弃用 sql_regcase()
【发布时间】:2014-10-28 21:48:53
【问题描述】:

我有下面的代码:

foreach($filetypes as $filetype)
{
  $filenum = $filenum + count(glob($root.$tree.$branch.sql_regcase($filetype),GLOB_NOSORT));
}

函数 sql_regcase() 已弃用。有人知道sql_regcase() 的替代品吗? 我在下面尝试过,但我认为它不一样。

$filenum = $filenum+count(glob($root.$tree.$branch.preg_mach("/$filetype/ig"),GLOB_NOSORT));

同样根据这个http://php.net/manual/en/reference.pcre.pattern.posix.php没有等效功能。

【问题讨论】:

    标签: php posix deprecated pcre alternate


    【解决方案1】:

    我终于成功了:

    function my_Sql_regcase($str){
    
        $res = "";
    
        $chars = str_split($str);
        foreach($chars as $char){
            if(preg_match("/[A-Za-z]/", $char))
                $res .= "[".mb_strtoupper($char, 'UTF-8').mb_strtolower($char, 'UTF-8')."]";
            else
                $res .= $char;
        }
    
        return $res;
    }
    

    【讨论】:

    • 不知道如何与您联系。我已使用此代码 sn-p 在 OpenCart 中实现不区分大小写的图像搜索。虽然我还没有将修改提交给普通社区,但我想让你知道我在评论部分归功于你 (ioaniatr)。谢谢!
    【解决方案2】:

    在您的正则表达式中使用不区分大小写的标志 (i) 而不是 /[a-z]/i

    【讨论】:

    • preg_mach() 不是我使用它的替代方法。你看,preg_match() 返回的真/假。另一方面,sql_regcase() 如果$filetype = 'jPeG'; 将创建类似:[Jj][Pp][Ee][Gg] 的模式。因此,glob() 函数中的完整模式将是:/root/my_site/public_html/images/[Jj][Pp][Ee][Gg]glob() 将匹配并返回文件夹中的每个 jpeg 文件名(不区分大小写)。然后 count() 将进行数学运算并返回文件的数量(jpeg)。我不知道如何用另一种方式从$filetype 创建模式。
    【解决方案3】:

    我知道这是一个老问题,但是这样的问题呢?

    function sql_regcase($field) {
        $field = preg_replace("/[^[:alnum:]]/i", "", $field);
        $field = str_replace("_", "\_", $field);
        $field = str_replace("%", "\%", $field);
        return $field;
    }
    

    【讨论】:

      猜你喜欢
      • 2020-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-20
      • 2013-08-22
      • 2019-12-20
      相关资源
      最近更新 更多