我正在思考如何在一些预定义位置上将字符串包含到另一个字符串中更好。
例如,我希望将标记<i>some info</i>
插入到字符串中:
"This is an example %s of the position %s"
在两个不同的地方:第一个%s或第二个%s取决于某些条件,但两个地方都没有。
我考虑过将printf()与预定义的位置标记一起使用,例如%1 $ s,%2 $ s。但我不确定如何优雅地实现它。
而且我还想过使用一个将字符串分成片段然后连接它的数组,例如:
$arr[0] = "This is an example";
$arr[2] = "of the position";
然后像这样粘贴字符串:
$arr[1] = "<i>some info</i>";
或
$arr[3] = "<i>some info</i>";
但它看起来不太灵活。
感谢。
答案 0 :(得分:1)
您可以使用vsprintf()
,如下所示:
// Do the magic of determining positions and create an array
$replaceArray = array('','<i>some info</i>','');
$Placeholder = "This is an example %s of the position %s";
$Result = vsprintf($Placeholder, $replaceArray);
echo $Result;
您可以动态生成replaceArray,并且可以使用变量来确定“some info”值,例如“empty”值。
答案 1 :(得分:0)
您可以使用sprintf()
,如评论中所述,如下所示:
$StringToInsert = "<i>some info</i>";
$StringToIgnore = NULL;
$Placeholder = "This is an example %s of the position %s";
$Result = sprintf($Placeholder, $StringToInsert, $StringToIgnore);
echo $Result;
您可以使用逻辑命令$StringToInsert / $StringToIgnore
将字符串放置在占位符中。
这是位置的一些信息