我在PHP中遇到了问题。我有一个这样的字符串:
"qqslsqpsq"
我希望用分隔值替换每个's'
,例如:
's'
- > pos:2 - > 'web'
's'
- > pos:4 - > 'book'
's'
- > pos:7 - > 'pen'
最后,字符串将转换为:
"qqweblbookqppenq"
我读过阅读str_replace()
功能强大,但似乎无法做到这一点。我正在考虑找到每个's'
的位置并用索引替换它,但我不能!!
答案 0 :(得分:1)
function replaceCallback() {
static $i = 0;
$replacements = array('web', 'book', 'pen');
return $replacements[$i++];
}
echo preg_replace_callback('/s/', 'replaceCallback', 'ashreswfsb');
答案 1 :(得分:0)
使用str_replace意味着你必须循环遍历字符串,然后使用找到的第一个s的偏移来决定替换的位置和内容。相反,请使用preg_replace在单个语句中执行此操作。
$string = 'qqslsqpsq';
$string = preg_replace('/(.*?)s(.*?)s(.*?)s/', '${1}web${2}book${3}pen', $string);