【发布时间】:2015-09-17 16:35:41
【问题描述】:
我有一个带有名字的数组和一个带有全名的 mysql 表上的列(名字有时在方括号中)。正确的 mysql 语句如何比较数组的元素和列的元素并仅在第一个名称在数组中并且也在方括号中时才返回全名?
id | full_names
-----------------------------------
1 | [John] Mclay
2 | [John] Rossi
3 | Will John
4 | [Brian] Cosby
5 | Brian O'neal
$names_array=array("[John]" ,"[Brian]");
sql_query="SELECT full_names FROM myTable
WHERE full_names REGEXP '^(".implode("|", $names_array).")[[:>:]]'";
因此,我希望只有第一个、第二个和第四个全名。
我的问题是因为方括号。数组中的每个名称都有 2 个方括号,对于每个名称,我必须使用 \\ 两次来转义特殊字符。但是我怎样才能把它和内爆结合起来写呢?先感谢您!
【问题讨论】:
-
使用preg_quote 转义元字符。另外,请将问题标记为php
-
$impl_string=implode("|", $names_array);会给我这样的字符串:[John]|[Brian]和preg_quote(impl_string,'\\')会给我这样的字符串\[John\]\|\[Brian\]。但这不是我想要的。 -
使用
preg_quote之前implode,因为@gyaani 已经回答了