2012-05-05 25 views
1

我需要用PHP來檢查字符串爲特定的文本組件和替換值,如果它出現了新的價值。比如我可能有一個這樣的字符串:PHP處理字符串(查找/替換如果組件存在)

?customerID=12345&recid=65&skip=20&type=job 

我需要找到「&跳過= 20」(它不會總是= 20,它可以是任何數字,如20,80,100,等)子串,並用變量($ newValue)中的新值替換「20」值。因此,如果該字符串存在和$ NEWVALUE = 40,新的字符串將是:

?customerID=12345&recid=65&skip=40&type=job 

如果字符串是:

?customerID=12345&recid=65&skip=160&type=job 

新的字符串將是($ NEWVALUE = 180):

?customerID=12345&recid=65&skip=180&type=job 

我非常確定我應該使用這些函數 - strpos,preg_match,preg_replace - 但我在這方面花了太長時間,似乎沒有更加接近。如果任何人都可以告訴我如何使用這些或其他函數來查找子字符串並替換值得讚賞的值。

+0

你試過['parse_str'(http://us.php.net/parse_str)和['http_build_query'](http://us.php.net/ http_build_query)? – DCoder

回答

0

嘗試preg_replace_callback

<?php 

$str = "?customerID=12345&recid=65&skip=20&type=job"; 
$newStr = preg_replace_callback("/skip=([0-9]+)/i", "doIt", $str) 

function doIt($match){ 

    return $match[1] + 20; 

}