[英]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.