2016-07-06 84 views
0

我需要編寫一個函數,該函數需要一個長字符串,該字符串是一個sql命令,並且搜索等號會返回到之前的單詞並添加「post」。在它之前。PHP字符串替換函數

例子:

輸入:

$sqlFilter = "WHERE sport = 'Hockey' AND team = 'New York Rangers'; 

輸出:

$sqlFilter = "WHERE post.sport = 'Hockey' AND post.team = 'New York Rangers'; 
+0

只是在尋找,從哪裏開始。我可以掃描整個字符串與循環找到等於字符,然後回去用空格作爲標記取代,但一些須藤代碼有可能和可能是更好的方法 –

+0

正則表達式模式可能工作...雖然可能不會成爲戰鬥證明。 https://regex101.com/r/rK1qP5/1 –

回答

2

你不需要編寫任何功能,因爲你有一個preg_replace

您需要添加該代碼

$newSqlFilter = preg_replace('/([^(\s]*?)[ ]{0,}=/', 'post.\0', $sqlFilter); 

另一件事 - 與"字符關閉您的查詢字符串。

+0

^看到這就是爲什麼我問..我的PHP知識基本上限於C知識。謝謝。 –

+0

..我用正則表達式不太好,實際上在過濾變量的開始和結尾都有一個括號,所以得到一個像「WHERE post。(sport ='Hockey'AND post.team ='New York Rangers')的錯誤。解決方法是讓它在支架的內部? –

+0

我更新了使用支架的答案。 – zajonc

2

您可以使用正則表達式搜索模式,使用函數preg_replace_callback(),該函數接受回調方法名稱進行替換。您使用表達式來查找所需的模式並使用回調方法進行替換。

瞭解更多關於此 http://php.net/manual/en/function.preg-replace-callback.php