PHP 操作字符串(如果组件存在,则查找/替换)


PHP manipulate string (find/replace if component present)

我需要使用 PHP 检查特定文本组件的字符串,如果存在新值,请替换该值。例如,我可能有这样的字符串:

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

我需要找到"&skip=20"(它并不总是 = 20,它可以是 20、80、100 等任何数字(子字符串,并将"20"值替换为变量 ($newValue( 中的新值。因此,如果该字符串存在并且 $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 - 但我在这方面花了太长时间,似乎并没有接近。如果有人可以告诉我如何使用这些或其他函数来查找子字符串并替换值,将不胜感激。

尝试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;
}