我有幾個字符串,如果字符串是如下PHP替換第二次發生?以&
$string ="w?w+f=w?wefwef?blahblah";
$desiredString ="w?w+f=w&wefwef?blahblah";
如果這個格式,我試圖取代第二?至&別無所求。
我試過正則表達式和preg_match,但沒有運氣。
我有幾個字符串,如果字符串是如下PHP替換第二次發生?以&
$string ="w?w+f=w?wefwef?blahblah";
$desiredString ="w?w+f=w&wefwef?blahblah";
如果這個格式,我試圖取代第二?至&別無所求。
我試過正則表達式和preg_match,但沒有運氣。
在當前的情況下的解決方案是:
$string ="w?w+f=w?wefwef?blahblah";
$desiredString = preg_replace('/^(.+?\?.+?)\?/', '$1&', $string);
echo $desiredString;
輸出:
w?w+f=w&wefwef?blahblah
第N occurence正則表達式:
/^((?:(?:.*?\?){0}.*?))\?/ // for first occurence
/^((?:(?:.*?\?){1}.*?))\?/ // for second occurence
/^((?:(?:.*?\?){2}.*?))\?/ // for third occurence
// etc.
嘗試這種情況:
$string ="w?w+f=w?wefwef?blahblah";
$desiredString = '';
$j = 0;
for($i = 0; $i < strlen($string); $i++){
if($string[$i] == '?' && ++$j == 2)
$desiredString .= '&';
else
$desiredString .= $string[$i];
}
echo $desiredString; //w?w+f=w&wefwef?blahblah
你爲什麼最終以該字符串開頭?通常情況下,最好在實際發生的情況下修復這樣的情況,而不要在事後修補它。 –
檢查http://stackoverflow.com/questions/23239061/preg-replace-replace-second-occurrence – jitendrapurohit