$sprintfString = "This is %{what}! %{what}? This is %{place}!"; $assocArray = array( 'what' => 'madness', 'place' => 'Sparta' );
'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); }