我有几个字符串,如果字符串是如下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