如何在PHP中替换字符串中的字符?

时间:2011-02-27 05:10:38

标签: php replace

我在PHP中遇到了问题。我有一个这样的字符串:

"qqslsqpsq"

我希望用分隔值替换每个's',例如:

  • 首先's' - > pos:2 - > 'web'
  • 's' - > pos:4 - > 'book'
  • 第三's' - > pos:7 - > 'pen'
  • ...

最后,字符串将转换为:

"qqweblbookqppenq"

我读过阅读str_replace()功能强大,但似乎无法做到这一点。我正在考虑找到每个's'的位置并用索引替换它,但我不能!!

你可以指导我吗?有没有办法做到这一点?

2 个答案:

答案 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);