the FAQTs article can be found archived at http://web.archive.org/web/20060601063513/http
://www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40
(url split to get past the line-length limitation)
(PHP 4, PHP 5)
print — 문자열을 출력합니다.
설명
int print
( string $arg
)
arg 를 출력합니다. 항상 1을 반환합니다.
print()는 실제 함수가 아닙니다. (언어 구조입니다) 그러므로, 인자 목록에 괄호를 사용할 필요가 없습니다.
Example#1 print() 예제
<?php
print("Hello World");
print "print()는 괄호 없이도 작동합니다.";
print "여러 줄로
사용할 수 있습니다. 줄바꿈 문자도
제대로 출력합니다";
print "여러 줄로\n사용할 수 있습니다. 줄바꿈 문자도\n제대로 출력합니다.";
print "이스케이핑 문자는 \"이렇게\" 합니다.";
// print 구문 안에서 변수를 사용할 수 있습니다.
$foo = "foobar";
$bar = "barbaz";
print "foo는 $foo"; // foo는 foobar
// 배열을 사용할 수 있습니다.
$bar = array("value" => "foo");
print "이것은 {$bar['value']} !"; // 이것은 foo !
// 변수값이 아닌, 변수명을 출력하려면 작은 따옴표를 사용하십시오.
print 'foo는 $foo'; // foo는 $foo
// 다른 문자을 사용하지 않는다면, 변수만 출력할 수 있습니다.
print $foo; // foobar
print <<<END
이는 $varialbe을 써넣으면서 여러 줄을 출력하는
"here document"(여기는 문서) 구문의 사용입니다.
문서 종료어는 아무런 공백도 없이 단지 세미콜론
만을 가지는 점에 주의하십시오.
END;
?>
print()와 echo()의 차이에 관한 간단한 설명은 FAQT의 Knowledge Base Article에서 볼 수 있습니다: » http://www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40
Note: 이것은 함수가 아닌 언어 구조이기 때문에, 변수 함수 방식으로 호출할 수 없습니다.
jon
01-Jun-2007 07:19
01-Jun-2007 07:19
mvpetrovich
30-Mar-2007 12:02
30-Mar-2007 12:02
I grew quite tired of backslashes, and wrote these routines. It uses the back single quote as a substitute for double quotes within a statement. It made my code much more readable. It is a little easier than using a "here document." I also found I make a few less typing errors.
<?php
function qq($text) {return str_replace('`','"',$text); }
function printq($text) { print qq($text); }
function printqn($text) { print qq($text)."\n"; }
//example - before
echo "<a href=\"#\" class=\"stdbutton\" style=\"float:left;\" onclick=\"myfunction(); return false;\">My Link</a>\n";
//becomes - with printqn function
printqn("<a href=`#` class=`stdbutton` style=`float:left;` onclick=`myfunction(); return false;`>My Link</a>");
?>
floppie at quadra-tec dot net
15-Nov-2006 09:09
15-Nov-2006 09:09
At the top of your page, do something to this effect:
<?php
$n = "\n";
$t = "\t";
?>
Then, if you need your table cell four tabs in:
<?php echo($t . $t . $t . $t . '<td>whatever</td>' . $n); ?>
This means the parser only has to interpret four characters inside double quotes, then just stores them in variables. With strings that small, concatenating six things together won't be slow at all.
vincent at bevort dot com
21-May-2006 12:36
21-May-2006 12:36
Sometime there is no choice in using a single or double quote
ie when using special chars to format the output to make the HTML more readable you have to use the Double qoutes. Single quotes make PHP fotmat the '\n' as text
phpnet at i3x171um dot com
20-May-2006 07:41
20-May-2006 07:41
I have written a script to benchmark the several methods of outputting data in PHP: via single quotes, double quotes, heredoc, and printf. The script constructs a paragraph of text with each method. It performs this construction 10,000 times, then records how long it took. In total, it prints 160,000 times and records 16 timings. Here are the raw results.
Outputted straight to browser--
Single quotes: 2,813 ms
...with concatenation: 1,179 ms
Double quotes: 5,180 ms
...with concatenation: 3,937 ms
heredoc: 7,300 ms
...with concatenation: 6,288 ms
printf: 9,527 ms
...with concatenation: 8,564 ms
Outputted to the output buffer--
Single quotes: 8 ms
...with concatenation: 38 ms
Double quotes: 8 ms
...with concatenation: 47 ms
heredoc: 17 ms
...with concatenation: 49 ms
printf: 54 ms
...with concatenation: 52 ms
A nice graph of the script's output can be found here:
http://i3x171um.com/output_benchmarks/ob.gif
So what should you choose to print your text? I found several things out writing this.
First, it should be noted that the print and echo keywords are interchangeable, performance-wise. The timings show that one is probably an alias for the other. So use whichever you feel most comfortable with.
Second, if you've ever wondered which was better, the definitive answer is single quotes. Single quotes are at least four times faster in any situation. Double quotes, while more convenient, do pose a debatably significant performance issue when outputting massive amounts of data.
Third, stay away from heredoc, and absolutely stay away from [s]printf. They're slow, and the alternatives are there.
The source of my script can be found here:
http://i3x171um.com/output_benchmarks/ob.txt
DO NOT RUN THE SCRIPT ON THE INTERNET! Run it instead from localhost. The script outputs ~45 megabytes of text in an html comment at the top of the page by default. Expect the benchmark to take ~45 seconds. If this is too long, you can change the amount of iterations to a lower number (the results scale accurately down to about 1,000 iterations).
g8z at yahoo dot com
13-Mar-2006 11:16
13-Mar-2006 11:16
I wanted to print a file on a Windows 2003 server from PHP, and found the "print" function instead. Just in case some other users are trying to physically print to a printer, rather than print to the screen, here's a function to do it.
This function will print a single file of one of these types: pdf, doc, xls, rtf, or plain text. If you have the full .exe path, you can print other document types, too. The shell_exec function is not enabled in safe mode.
Courtesy of Darren's Script Archive: http://www.tufat.com
<?php
function print_file($filename)
{
// path to your adobe executable
$adobe_path='"C:/Program Files/Adobe/Acrobat 7.0/Reader/AcroRd32.exe"';
$ext='';
$ext=strrchr($filename,'.');
$ext=substr($ext,1);
$ext_xl=substr($ext,0,2);
if ($ext=='pdf') {
shell_exec ($adobe_path.' /t '.$filename);
}
else if ($ext=='doc'||$ext=='rtf'||$ext=='txt') {
$word = new COM("Word.Application");
$word->visible = true;
$word->Documents->Open($filename);
$word->ActiveDocument->PrintOut();
$word->ActiveDocument->Close();
$word->Quit();
}
else if ($ext_xl=='xl') {
$excel = new COM("Excel.Application");
$excel->visible = true;
$excel->Workbooks->Open($filename);
$excel->ActiveWorkBook->PrintOut();
$excel->ActiveWorkBook->Close();
$excel->Quit();
}
}
// example of printing a PDF
print_file("C:/photo_gallery.pdf");
?>
jon at tap dot net
05-Dec-2005 01:48
05-Dec-2005 01:48
I have a small utility run from the command line that processes a potentially huge list of files. As it can take hours to complete, I stuck a
print '.';
statement in the body of the main loop to prove that something was happening.
For reasons unknown to me, the utiliity suddenly started buffering the output such that it printed nothing until completion, defeating the purpose of the running monitor. Adding flush() statements did nothing. The problem was solved by using
fputs(STDOUT, '.');
but I have no idea why.
james-web at and dot org
25-Jul-2005 03:47
25-Jul-2005 03:47
Note that if you want to dump the value of a variable, you want to use print_r(), var_dump() or var_export().
ejallison at gmail dot com
16-Jul-2005 03:10
16-Jul-2005 03:10
This is a simple function for printing debug comments that I didn't think of for a long time. Maybe it'll serve you good too.
<?php
function printd($str) {
if ($debug) { echo $str; }
}
// ...
if ($valueCalculatedEarlierInTheScript == 3) {
doSomethingWithNoOutput();
printd("doSomethingWithNoOutput() has executed.");
}
?>
It's mostly just to make sure everything is running without having to go through everything and put in echo "Step #whatever has executed" whenever something mysterious isn't working.
gem at rellim dot com
05-Nov-2004 01:28
05-Nov-2004 01:28
HERE Documents can reference arrays as long as you enclose
the vars in {}.
Like this:
<?php
$line = array( 'title' => "Hello", 'date' => 'Today');
echo <<<EOT
Title: {$line['title']}
Date: {$line['date']}
EOT;
?>
Run this and get
Title: Hello
Date: Today
More info here, scroll down to "heredoc syntax":
http://www.php.net/manual/en/language.types.string.php
rjl at xs4all dot nl
15-Jan-2004 04:08
15-Jan-2004 04:08
To elaborate on above example adding an
array variable
$text = <<<END
This uses the "here document" syntax to output
multiple lines with $variable interpolation. Note
that the here document terminator must appear on a
line with just a semicolon no extra whitespace!
User = {$_REQUEST['user']}
END;
'print $text;' Will output the string. Very handy for storing HTML.
Or adding {} around the array will allow you to use
above mentioned html blocks in conjuction with forms.
Rene =<>=
