PHP Sprintf 탈출 %


184

다음과 같은 출력을 원합니다 :-

Top-Up 계정에서 € 27.59의 50 %를 차감하려고합니다.

내가 이런 식으로 할 때 :-

$variablesArray[0] = '€';
$variablesArray[1] = 27.59;
$stringWithVariables = 'About to deduct 50% of %s %s from your Top-Up account.';
echo vsprintf($stringWithVariables, $variablesArray);

그러나 그것은 나에게 오류를 제공 vsprintf() [function.vsprintf]: Too few arguments in ...는 생각 때문에 %의를 50%교체도. 어떻게 탈출합니까?


1
@안부. Shrapnel 내 질문은 vsprintf not printf에 관한 것입니다. 처음으로 이것을 사용하고 있으며 둘 사이의 유사성을 가정 할 수 없었습니다. 그러나, 검색 escape또는 escaping모두 php.net/printfphp.net/vsprintf모두 즉시 답을 표시하지 않습니다. 검색 할 때 %%php.net/printf에 답변이 표시되지만 알지 못했습니다 %%!!! 다운 보팅하기 전에 답을 찾으셨습니까?
Sandeepan Nath

@sandeepan : vsprintf과 동일한 함수 군에 속합니다 printf. 형식을 찾기위한 올바른 문서는 php.net/sprintf 입니다. 두 페이지 모두 "포맷에 대한 설명은 sprintf ()를 참조하십시오." 적어도 클릭하지 않았습니까?
BoltClock

5
@안부. Shrapnel ok php.net/sprintf를 보자. 대답은 어디에 있는가? 페이지가 반쯤 내려갔습니다 With printf() and sprintf() functions, escape character is not backslash '\' but rather '%'.. 그것은 당신에게 나에게 그렇게 분명하지 않았다. 중복 질문이 있으면 링크를 작성하는 것이 좋습니다. 그러나 많은 사람들이이 질문이 도움이 될 것이라고 확신합니다. 그러나 당신은 그것을 받아들이지 않을 것이며 여전히 말을 할 것입니다.
Sandeepan Nath

오, 나는 두 번째 의견이 Shrapnel Col에 의한 것이라고 생각했습니다. 죄송합니다
Sandeepan Nath

3
따라서 RTFM 응답에 대한 플래그가 있어야합니다. 사람들이 문서를 읽도록 할 수 있도록 사람들이 트롤과 거의 같습니다. 그는 도움이 필요했고 질문을 한 다음 누군가가 도움을 받아 대답했습니다. 세상은 계속되었고 인터넷은 누군가의 이익을 위해 사용되었습니다. 한편 나는 2 살짜리 논쟁에 열중하고있다.
rob5408

답변:


344

다른 것으로 탈출하십시오 %:

$stringWithVariables = 'About to deduct 50%% of %s %s from your Top-Up account.';

22
sprintf ( "SELECT * FROM ... 어디에서 이름이 '%%% s %% ss %%' ', $ fname, $ lname); -못 생겼지 만 작동합니다!
Jan Hettich

1
이는 Ruby에도 적용됩니다.
Jamie Cook

다른 "% s"로 해당 부분을 추가 할 수 있습니다. sprintf ( '% s에서 % s를 얻을 수 있습니다', '무언가', '50 % ')
Lukas Liesis

문자열이 역동적 인 경우 어떻게 탈출합니까? 하자 말,sprintf('This is %s.', the_title())
budji

7
@madastrostr_replace('%', '%%', the_title())
Ivanka

3

많이 쉽다.

%원본 앞에 다른 %것을 놓아 탈출하십시오.

예를 들어

$num=23;
printf("%%d of 23 = %d",$num);

산출:

%d of 23 = 23

1

이건 어때?

$variablesArray[0] = '%';
$variablesArray[1] = '€';
$variablesArray[2] = 27.59;
$stringWithVariables = 'About to deduct 50%s of %s %s from your Top-Up account.';
echo vsprintf($stringWithVariables, $variablesArray);

변수 배열에 백분율 기호를 추가하기 만하면됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.