简体   繁体   English

查询语法中的MySQL REGEX

[英]MySQL REGEX in Query Syntax

I have following example array, 我有以下示例数组,

Array
(
    [0] => TEST1
    [1] => TEST2
    [2] => TEST3
    [3] => TEST4
    [4] => TEST
    ....
)

Now in Database values stored as 现在在数据库中存储为

/TEST/IMAGE
/TEST2/VIDEO
/TEST3/MIME
...

Now I want to match the substring found in array when to fetch the data from database: 现在,我想匹配从数据库中获取数据时在数组中找到的子字符串:

So, I have applied following query: 因此,我应用了以下查询:

SELECT * FROM media_library WHERE 1 AND sDirectory REGEXP '(/TEST1.*)|(/TEST2.*)|(/TEST3.*)|(/TEST4.*)|(/TEST.*)'

But for the syntax '(/TEST1.*)| 但是对于语法'(/TEST1.*)|

I have used for loop 我用过循环

$data = '';$k=0;
foreach($folders as $key => $val){
    $data .= ($k>0) ? "|" : "";
    $data .= "(/".$val.".*)";
    $k++;
}

So, Is there any way to directly use an array which creates format very easily rather than for loop? 那么,有没有办法直接使用非常容易创建格式而不是for循环的数组?

Thanks 谢谢

You can use http://php.net/manual/en/function.array-map.php and after that use implode() . 您可以使用http://php.net/manual/en/function.array-map.php ,然后使用implode()

Something like that: 像这样:

$regex = implode('|', array_map(function ($value) {
    return "(/{$value}.*)";
}, $yourarray));

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM