如果你有琴弦

'Old string Old more string Old some more string'
而你想得到
'New1 string New2 more string New3 some more string'
你会怎么做?
换句话说,您需要用变量字符串'New'。$ i替换所有'Old'实例。如何做呢?

最佳答案

不需要正则表达式的迭代解决方案:

$str = 'Old string Old more string Old some more string';
$old = 'Old';
$new = 'New';

$i = 1;

$tmpOldStrLength = strlen($old);

while (($offset = strpos($str, $old, $offset)) !== false) {
  $str = substr_replace($str, $new . ($i++), $offset, $tmpOldStrLength);
}
$offset中的strpos()只是一些微优化。我不知道这是否值得(事实上,我什至不知道它是否会发生任何变化),但是其思想是我们不需要在已经处理过的子字符串中搜索$old
参见Demo
Old string Old more string Old some more string
New1 string New2 more string New3 some more string

关于php - 用变量字符串替换所有子字符串实例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6596574/

10-13 00:49