我有一个字符串,如下所示:
Hello my name is [foo], I'm from [foo]
然后我声明一个数组:
$foo = array('Sam', 'Tunisia');
我如何找到文本中所有出现的[foo],并将第一个替换为$foo[0],第二个替换为$foo[1]。。。结果应该是这样的:
Hello my name is Sam, I'm from Tunisia
PS:我必须使用相同的模式[foo]
根据@Rizer123的建议,使用preg_replace_callback()
。例如:
<?php
$str = "Hello my name is [foo], I'm from [foo]";
$foo = ['Sam', 'Tunisia'];
// note: passing `$foo` by reference. This allows you to
// unshift entries for each match. If there are more matches
// in `$str` than elements in the `$foo` array, `array_shift()`
// will simply return `null`
echo preg_replace_callback('/'[foo']/', function() use (&$foo) {
return array_shift($foo);
}, $str);
收益率:
你好,我叫Sam,我来自突尼斯
有关更多阅读,请参阅的PHP文档
- 匿名函数和
use
语言构造(示例#3) array_shift()
希望这有帮助:)