You*_*ung 5 php arrays replace
假设我有一个字符串
$str = "abc*efg*hij*";
Run Code Online (Sandbox Code Playgroud)
和一个数组
$arr = array("123","456","789");
Run Code Online (Sandbox Code Playgroud)
现在我想根据位置替换*s in $str中的元素.$arr第一个*替换为$arr[0],第二个替换为.$arr[1]我检查函数str_replace,虽然它接受数组作为参数但我发现它不起作用.我不能只是使用
$newstr = "abc{$arr[0]}efg{$arr[1]}hij{$arr[2]}"
Run Code Online (Sandbox Code Playgroud)
因为真实$str可能是一个很长的字符串,有很多*.好的想法?谢谢.
Bol*_*ock 12
如果*是唯一的格式字符,尝试转换*到%s(也逃避现有%至%%使用),然后vsprintf(),这需要值的数组中传递作为格式参数:
$str = str_replace(array('%', '*'), array('%%', '%s'), $str);
$newstr = vsprintf($str, $arr);
echo $newstr;
Run Code Online (Sandbox Code Playgroud)
输出:
abc123efg456hij789
Run Code Online (Sandbox Code Playgroud)
请注意,如果您有比星号更多的数组元素,则末尾的额外元素将不会出现在字符串中.如果你有更多的星号而不是数组元素,vsprintf()将发出太少的参数警告并返回false.
| 归档时间: |
|
| 查看次数: |
1058 次 |
| 最近记录: |