我需要編寫一個函數,該函數需要一個長字符串,該字符串是一個sql命令,並且搜索等號會返回到之前的單詞並添加「post」。在它之前。PHP字符串替換函數
例子:
輸入:
$sqlFilter = "WHERE sport = 'Hockey' AND team = 'New York Rangers';
輸出:
$sqlFilter = "WHERE post.sport = 'Hockey' AND post.team = 'New York Rangers';
我需要編寫一個函數,該函數需要一個長字符串,該字符串是一個sql命令,並且搜索等號會返回到之前的單詞並添加「post」。在它之前。PHP字符串替換函數
例子:
輸入:
$sqlFilter = "WHERE sport = 'Hockey' AND team = 'New York Rangers';
輸出:
$sqlFilter = "WHERE post.sport = 'Hockey' AND post.team = 'New York Rangers';
你不需要編寫任何功能,因爲你有一個preg_replace
。
您需要添加該代碼
$newSqlFilter = preg_replace('/([^(\s]*?)[ ]{0,}=/', 'post.\0', $sqlFilter);
另一件事 - 與"
字符關閉您的查詢字符串。
^看到這就是爲什麼我問..我的PHP知識基本上限於C知識。謝謝。 –
..我用正則表達式不太好,實際上在過濾變量的開始和結尾都有一個括號,所以得到一個像「WHERE post。(sport ='Hockey'AND post.team ='New York Rangers')的錯誤。解決方法是讓它在支架的內部? –
我更新了使用支架的答案。 – zajonc
您可以使用正則表達式搜索模式,使用函數preg_replace_callback(),該函數接受回調方法名稱進行替換。您使用表達式來查找所需的模式並使用回調方法進行替換。
瞭解更多關於此 http://php.net/manual/en/function.preg-replace-callback.php
只是在尋找,從哪裏開始。我可以掃描整個字符串與循環找到等於字符,然後回去用空格作爲標記取代,但一些須藤代碼有可能和可能是更好的方法 –
正則表達式模式可能工作...雖然可能不會成爲戰鬥證明。 https://regex101.com/r/rK1qP5/1 –