$sprintfString = "This is %{what}! %{what}? This is %{place}!";
$assocArray = array(
'what' => 'madness',
'place' => 'Sparta'
);
Result:
'This is madness! madness? This is Sparta!'
public static function sprintAssoc($string, $params)
{
foreach ($params as $key => $value) {
$string = preg_replace("/%{({$key})}/", $value, $string);
}
return $string;
}
/** * @test */ public function shouldSprintfStringWithAssocArrayAsParam() { //given $sprintfString = "This is %{what}! %{what}? This is %{place}!"; $assocArray = array('what' => 'madness', 'place' => 'Sparta'); //when $resultString = Strings::sprintAssoc($sprintfString, $assocArray); //then $this->assertEquals('This is madness! madness? This is Sparta!', $resultString); }