PHP正则表达式 - 从查询字符串中删除未使用的约束

时间:2014-06-27 13:26:03

标签: php sql regex

背景

我正在处理一小段代码,它将迭代一些动态创建的表单的字段并从中创建数据库选择。

SELECT some_col FROM some_tab WHERE col1=%fieldName1 AND col2=%fieldName2 AND col3=%fieldName3

我遍历表单的字段,我正在替换"%fieldName?"值存储在特定字段中。我的问题是,并非查询字符串中提到的所有字段都可以在表单中列出。因此,在用值替换某些字段名称后,我想从查询字符串中删除其余字段。

问题

我想删除一个以" AND"开头的字符串,以"结尾"并包含" =%"。你能帮我吗?

2 个答案:

答案 0 :(得分:1)

你可以用这个:

$query=preg_replace('% AND [a-z0-9A-Z]+\=\%[^\s]+%','',$query);

答案 1 :(得分:1)

使用此:

$replaced = preg_replace('~AND.*?=%\S*[ ]~', '', $yourstring);

<强>解释

  • AND与文字AND
  • 相匹配
  • .*?懒洋洋地匹配一切......
  • 文字=%
  • \S*匹配任何非空格的字符
  • [ ]匹配一个空格(不需要括号,但更容易发现)
  • 我们用空字符串替换