我試圖讓字符串在報價中。 我正在使用正則表達式,但我有轉義引號的問題。獲取並用正則表達式替換帶引號的字符串
例如,我有這個:
$var = "SELECT * FROM TABLE WHERE USERNAME='Carasuman'";
preg_match_all('~([\'"])(.*?)\1~s', $var, $result);
$new = preg_replace('~([\'"])(.*?)\1~s',"<#################>",$var);
代碼工作完美。我在$新報值替換值$結果[1]
$new = "SELECT * FROM TABLE WHERE USERNAME=<#################>";
$result[1] = "Carasuman";
我的問題是,當我加引號之內的scaped報價:
$var = "SELECT * FROM TABLE WHERE USERNAME='Carasuman\'s'";
我得到這個:
$new = "SELECT * FROM TABLE WHERE USERNAME=<#################>'s";
$result[1] = "Carasuman\" //must be "Carasuman\'s";
我怎樣才能避免這種錯誤,並得到$新的$結果[1]像第一個例子?:
$new = "SELECT * FROM TABLE WHERE USERNAME=<#################>";
$result[1] = "Carasuman\'s";
謝謝!
檢查出正面/負面lookbehind並忽略「\」「 - http://www.regular-expressions.info/lookaround.html – Lachezar