2014-06-27 48 views
1

背景PHP正則表達式 - 從查詢字符串

我工作的一小部分的代碼,將通過一些動態創建表單字段進行迭代,並創建數據庫,從中選擇刪除未使用的約束。

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

我遍歷表單的字段,我正在替換「%fieldName?」將值存儲在特定的字段中。我的問題是並不是查詢字符串中提到的所有字段都可以在表單中列出。所以在用值替換某些字段名稱之後,我想從查詢字符串中移除其餘的字段。

問題

我想刪除與 「AND」 開頭的字符串,以 「結束」,幷包含 「=%」。你能幫我嗎?

+0

要完全解決您的問題,您可以嘗試使用'^ AND。*%。* $'。然而,因爲你的AND包含在一個字符串中(而不是一個字符串本身),所以類似這樣的東西應該更合適:'AND。*%。*' – Aserre

+1

'AND [a-zA-Z0-9 =] *% [a-zA-Z0-9 =] *?'會更好一些 – Aserre

+0

謝謝你這就是它 – Michal

回答

1

使用此:

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

說明

  • AND匹配字面AND
  • .*?懶洋洋地匹配一切都交給...
  • 字面=%
  • \S*匹配不是空格
  • 一個空間
  • [ ]比賽(不需要括號,但更容易被發現)任何字符
  • 我們替換爲空字符串
+0

謝謝,很高興它的作品! :) – zx81

1

您可以使用此:

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