php - 用不同的字符串替换相同的字符

标签 php arrays replace

<分区>

假设我有一个字符串

$str = "abc*efg*hij*";

和一个数组

$arr = array("123","456","789");

现在我想把$str中的*按照位置替换成$arr中的元素。第一个* 替换为 $arr[0],第二个替换为 $arr[1] 等。我检查函数 str_replace ,尽管它接受数组作为参数,但我发现它不起作用。我不能只使用

$newstr = "abc{$arr[0]}efg{$arr[1]}hij{$arr[2]}"

因为真正的 $str 可能是一个包含很多 * 的很长的字符串。有什么好主意吗?谢谢。

最佳答案

如果 * 是您唯一的格式字符,请尝试将 * 转换为 %s(同时转义现有的 %%%),然后使用 vsprintf() ,它接受一个值数组作为格式参数传递:

$str = str_replace(array('%', '*'), array('%%', '%s'), $str);
$newstr = vsprintf($str, $arr);
echo $newstr;

输出:

abc123efg456hij789

请注意,如果数组元素多于星号,末尾的额外元素将不会出现在字符串中。如果星号多于数组元素,vsprintf() 将发出参数太少的警告并返回 false

关于php - 用不同的字符串替换相同的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3984616/

相关文章:

php - 循环列表始终使用复选框插入列表中的第一个

php - Silex 上的绑定(bind)方法

PHP mysql 未定义索引 : timestamp

javascript - Deobfuscate JS 混淆脚本用于在服务器端执行它

android - 如何制作保存功能或Android应用程序?

javascript - 类型错误 : foo is undefined when trying to call it in array

javascript - 点击注册 1d 战舰游戏。使用数组记录以前的用户输入,然后与当前输入进行交叉检查

javascript - jQuery/Javascript : insert ID into jSON object?

Python 多处理进程在一段时间后休眠

python - 在 for 循环中运行 replace() 方法?