나는 Webmonkey's PHP and MySql Tutorial, Lesson 2을보고있다. PHP 리터럴이라고 생각합니다. %s
의 의미는 무엇입니까? 최소한 코드 블록의 첫 번째 커플에서 while 루프의 print_f()
함수 안에 있습니다.% S는 PHP, HTML 또는 XML에서 무엇을 의미합니까?
printf("<tr><td>%s %s</td><td>%s</td></tr>n", ...
나는 Webmonkey's PHP and MySql Tutorial, Lesson 2을보고있다. PHP 리터럴이라고 생각합니다. %s
의 의미는 무엇입니까? 최소한 코드 블록의 첫 번째 커플에서 while 루프의 print_f()
함수 안에 있습니다.% S는 PHP, HTML 또는 XML에서 무엇을 의미합니까?
printf("<tr><td>%s %s</td><td>%s</td></tr>n", ...
% 기호가 앞에 오는 printf 또는 sprintf 문자 앞에는 자리 표시 자 (또는 토큰)가 있습니다. 인수로 전달 된 변수로 대체됩니다.
예 :
$str1 = 'best';
$str2 = 'world';
$say = sprintf('Tivie is the %s in the %s!', $str1, $str2);
echo $say;
이 출력됩니다 :
Tivie는 세계 최고입니다!
참고 : 더 플레이스 홀더가 있습니다 (% s의 문자열 12 월 번호 등을위한 % d를 ...)
주문 :
당신이 통과하는 순서를 인수가 중요합니다. 당신이
$say = sprintf('Tivie is the %s in the %s!', $str2, $str1);
으로 $의 STR2와 $ str1과를 전환하는 경우는
는 "Tivie 최고의 세계입니다!"인쇄됩니다
당신은, 그러나,이 같은 인수의 읽기 순서를 변경할 수 있습니다 정확하게 문장을 인쇄합니다
$say = sprintf('Tivie is the %2$s in the %1$s!', $str2, $str1);
합니다.
또한 PHP는 동적 언어이므로 명시 적 유형 정의가 필요하지 않으며 지원됩니다. 즉, 필요에 따라 변수 유형을 저글링합니다. 스프린트에서 숫자 자리 표시 자 (% d)에 "문자열"을 전달하면 해당 문자열이 이상한 결과를 낼 수있는 숫자 (int, float ...)로 변환된다는 것을 의미합니다. 다음은 예입니다 :
$onevar = 2;
$anothervar = 'pocket';
$say = sprintf('I have %d chocolate(s) in my %d.', $onevar, $anothervar);
echo $say;
이 내가 PHPdocs
는 printf
에서 %s
문자열에 삽입 될 데이터를위한 자리이다. printf
에 대한 추가 인수는 삽입 할 값입니다. 첫 번째 자리 표시자는 첫 번째 값을 가져오고 두 번째 값은 두 번째 값을 가져 오는 등의 방식으로 자리 표시 자와 연결됩니다.
에서 내 0
더 읽기 2 초콜릿 (들)이
를 인쇄 할'+ 1' - BTW , 올바른 용어는 문자열 보간입니다. –
C의'printf'와 같은 구문입니다. –
$num = 5;
$location = 'tree';
$format = 'There are %d monkeys in the %s';
echo sprintf($format, $num, $location);
출력 내용 : "트리에 5 마리의 원숭이가 있습니다."
편집 해 주셔서 감사합니다. Ned. 나는 네 번의 편집을했고, 여전히 효과가 없었습니다. Markdown은 1 초 동안 엉망이되어 있어야합니다. – David
더 많은 관심을 기울여야 할 슈퍼 좋은 대답입니다. –
PHP 매뉴얼에서 직접보기 :) –
%s
은 %s
의 경우 귀중한 값 (문자열)으로 대체 될 유형 지정자입니다. - 인수를 정수로 취급하고, (부호) 진수로 표현합니다
D :
는 %s
외에 아래있는 가장 인기있는 다른 specifiers 사용할 수 있습니다.
f - 인수가 부동 소수점으로 처리되고 부동 소수점 숫자 (로캘 인식)로 표시됩니다.
s - 인수는 문자열로 취급되어 문자열로 표시됩니다.
네드의 설명과 함께 당신의 모범이 상당히 견고한 답을 찾는다 고 생각합니다. 질문 :'sprintf ('tivie가 % s!, $ str2, $ str2에 % s입니다.)'라고 쓰면 "티비가 세계 최고입니다!" –
str2 = world, – Tivie
오타 (typo 's)가 있기 때문에 "Tivie is the world is world"가 출력됩니다. 나는 그것에서 웃음을 얻었다. 그래서'% strn'은 말하기 위해'% s [n]'의 값을 반환합니까? 같은 표기법으로'% s % s'은'% s [0] % s [1]'의 값을 반환합니까? –