2012-03-16 2 views
2

sprintf() 문자열을 사용하여 문자열의 여러 자리 표시자를 하나의 값으로 대체하려면 어떻게해야합니까? 나는 보통 당신이 각 자리 표시 자에 대해 1 개의 변수를 전달할 것임을 알고 있지만 대신 %1$s 형식을 사용하면 단일 값을 전달할 수는 있지만 작동하도록 할 수는 없다는 것을 이해합니다.php sprintf 하나의 값으로 여러 자리 표시 자 바꾸기

나는 실제로 parametrised SQL 쿼리로 이것을 사용하지만, 쉽게 여기이 작동하지 않는 하나의 예를

$name = "Bill"; 
$string = "hello ?, your name is ? "; 
$string = sprintf(str_replace("?","'%1$s'",$string),$name); 

입니다 있어요. 또한 단일 자리 표시 자 (예 :

$name = "Bill"; 
$string = "hello ?"; 
$string = sprintf(str_replace("?","'%1$s'",$string),$name); 
  1. 그것은 하나 개의 값에서 여러 자리를 교체 할 수 있으며, 2. 하나의 문은 하나 또는 여러 개의 자리를 처리하기 위해 쓸 수 있습니까?

참고 : vsprintf()을 사용하여 배열을 전달하는 것에 대해 특별히 언급하지 않습니다. 단 하나의 값만 있기 때문입니다. 같은 가치를 여러 번 나눠주는 것이 무의미 해 보입니다.

감사합니다.

답변

2

예 및 예.

$sstr_replace으로 평가하기 때문에 작동하지 않습니다. 일반적으로 문자열 리터럴을 선언 할 때는 " 대신 항상 '을 사용합니다.

$name = 'Bill'; 
$string = 'hello ?, your name is ? '; 
$string = sprintf(str_replace('?','\'%1$s\'',$string),$name); 
+0

슈퍼, 항상 간단합니다! 감사 – leejmurphy