1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033
|
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision: 1.26 $ -->
<reference id="ref.misc">
<title>その他の関数</title>
<titleabbrev>その他</titleabbrev>
<partintro>
<para>
他のカテゴリには当てはまらない関数群を、こちらに収録しています。
</para>
</partintro>
<refentry id="function.connection-aborted">
<refnamediv>
<refname>connection_aborted</refname>
<refpurpose>
クライアントとの接続が断となった場合に&true;を返す
</refpurpose>
</refnamediv>
<refsect1>
<title>説明</title>
<methodsynopsis>
<type>int</type><methodname>connection_aborted</methodname>
<void/>
</methodsynopsis>
<simpara>
クライアントとの接続が断となった場合に&true;を返します。
詳細な説明に関しては、<link linkend="features">機能 </link>に関する章の
<link linkend="features.connection-handling">接続処理</link>
に関する記述を参照下さい。
</simpara>
</refsect1>
</refentry>
<refentry id="function.connection-status">
<refnamediv>
<refname>connection_status</refname>
<refpurpose>接続ステータスのビットフィールドを返す</refpurpose>
</refnamediv>
<refsect1>
<title>説明</title>
<methodsynopsis>
<type>int</type><methodname>connection_status</methodname>
<void/>
</methodsynopsis>
<simpara>
接続ステータスのビットフィールドを返します。
詳細な説明に関しては、<link linkend="features">機能 </link>に関す
る章の<link linkend="features.connection-handling">接続処理
</link>に関する記述を参照下さい。
</simpara>
</refsect1>
</refentry>
<refentry id="function.connection-timeout">
<refnamediv>
<refname>connection_timeout</refname>
<refpurpose>スクリプトがタイムアウトした場合に&true;を返す</refpurpose>
</refnamediv>
<refsect1>
<title>説明</title>
<methodsynopsis>
<type>int</type><methodname>connection_timeout</methodname>
<void/>
</methodsynopsis>
<simpara>
スクリプトがタイムアウトした場合に&true;を返します。
</simpara>
<warning>
<title>過去の関数</title>
<simpara>
この関数は、過去のものであり、4.0.5以降には存在しません。
</simpara>
</warning>
<simpara>
詳細な説明に関しては、<link linkend="features">機能 </link>に関す
る章の<link linkend="features.connection-handling">接続処理
</link>に関する記述を参照下さい。
</simpara>
</refsect1>
</refentry>
<refentry id="function.constant">
<refnamediv>
<refname>constant</refname>
<refpurpose>定数の値を返す</refpurpose>
</refnamediv>
<refsect1>
<title>説明</title>
<methodsynopsis>
<type>mixed</type><methodname>constant</methodname>
<methodparam><type>string</type><parameter>name</parameter></methodparam>
</methodsynopsis>
<simpara>
<function>constant</function> は、<parameter>name</parameter>で指
定した定数の値を返します。
</simpara>
<simpara>
<function>constant</function> はある定数の値を取得する必要がある
が、その名前が不明な場合に有用です。これは、定数が変数に保存され
ているか、関数により返されるかの場合です。
</simpara>
<para>
<example>
<title><function>constant</function> の例</title>
<programlisting role="php">
<![CDATA[
<?php
define ("MAXSIZE", 100);
echo MAXSIZE;
echo constant("MAXSIZE"); // 前の行と動作は同じ
?>
]]>
</programlisting>
</example>
</para>
<para>
<function>define</function>,
<function>defined</function>,
<function>constant</function> および <link
linkend="language.constants">定数</link> の節を参照下さい。
</para>
</refsect1>
</refentry>
<refentry id="function.define">
<refnamediv>
<refname>define</refname>
<refpurpose>名前を指定して定数を定義する</refpurpose>
</refnamediv>
<refsect1>
<title>説明</title>
<methodsynopsis>
<type>bool</type><methodname>define</methodname>
<methodparam><type>string</type><parameter>name</parameter></methodparam>
<methodparam><type>mixed</type><parameter>value</parameter></methodparam>
<methodparam><type>bool</type><parameter>
<replaceable><optional>case_insensitive</optional></replaceable>
</parameter></methodparam>
</methodsynopsis>
<para>
名前を指定して定数を定義します。詳細は、
<link linkend="language.constants">定数の節</link>を参照下さい。
</para>
<para>
定数の名前は <parameter>name</parameter> により指定され、
値は <parameter>value</parameter> により指定されます。
</para>
<para>
オプションの第3のパラメータ
<parameter>case_insensitive</parameter>も使用可能です。値
<constant>TRUE</constant> が指定された場合、定数は大文字小文字を
区別しなくなります。デフォルトの動作は、大文字小文字を区別します。
例えば、CONSTANT と Constant は異なった値を表します。
</para>
<para>
<example>
<title>定数の定義</title>
<programlisting role="php">
<![CDATA[
<?php
define ("CONSTANT", "Hello world.");
echo CONSTANT; // "Hello world."を出力します。
echo Constant; // "Constant"を出力し、警告が発生します。
define ("GREETING", "Hello you.",TRUE);
echo GREETING; // "Hello you."を出力
echo Greeting; // "Hello you."を出力
?>
]]>
</programlisting>
</example>
</para>
<para>
<function>define</function> は成功時に&true;、エラー発生時に
&false;を返します。
</para>
<para>
<function>defined</function>,
<function>constant</function> および
<link linkend="language.constants">定数</link>の節も参照下さい。
</para>
</refsect1>
</refentry>
<refentry id="function.defined">
<refnamediv>
<refname>defined</refname>
<refpurpose>
指定した名前の定数が存在するかどうかを調べる
</refpurpose>
</refnamediv>
<refsect1>
<title>説明</title>
<methodsynopsis>
<type>bool</type><methodname>defined</methodname>
<methodparam><type>string</type><parameter>name</parameter></methodparam>
</methodsynopsis>
<para>
<parameter>name</parameter> で指定した名前の定数が定義されている
場合に&true;、その他の場合に&false;を返します。
<example>
<title>定数のチェック</title>
<programlisting role="php">
<![CDATA[
<?php
if (defined("CONSTANT")){ // 引用符で括られている必要があります
echo CONSTANT; //
}
?>
]]>
</programlisting>
</example>
</para>
<para>
<function>define</function>,
<function>constant</function> および
<link linkend="language.constants">定数</link> の節も参照下さい。
</para>
</refsect1>
</refentry>
<refentry id="function.die">
<refnamediv>
<refname>die</refname>
<refpurpose><function>exit</function>のエイリアス</refpurpose>
</refnamediv>
<refsect1>
<title>説明</title>
<para>
この関数は<function>exit</function>のエイリアスです。
</para>
</refsect1>
</refentry>
<refentry id="function.eval">
<refnamediv>
<refname>eval</refname>
<refpurpose>文字列をPHPコードとして評価する</refpurpose>
</refnamediv>
<refsect1>
<title>説明</title>
<methodsynopsis>
<type>mixed</type><methodname>eval</methodname>
<methodparam><type>string</type><parameter>code_str</parameter></methodparam>
</methodsynopsis>
<simpara>
<function>eval</function> は、<parameter>code_str</parameter>
で与えられた文字列を PHP コードとして評価します。
中でも、データベースのテキストフィールドにコードを保存し、
後で実行するためには便利です。
</simpara>
<simpara>
<function>eval</function> を使用する際、注意するべき点が
いくつかあります。
パーサーが <function>eval</function>の処理中に落ちないように、
渡す文字列はセミコロンで文が終了するといった有効なPHPコード
である必要があります。また、<parameter>code_str</parameter> の
中の文字を適切にエスケープする必要があります。
</simpara>
<simpara>
<function>eval</function>の中で値を与えた変数は、
この後、メインスクリプトの中でもこれらの値を維持することも
覚えておいて下さい。
</simpara>
<simpara>
<literal>return</literal> 文は、文字列の評価をただちに終了します。
PHP4では、<function>eval</function>関数は &false;を返します。さも
なくば、結果の値を返すために<literal>return</literal>を使用するこ
とが可能です。一方、PHP3では、<function>eval</function>の型は
<literal>void</literal>であり、値を何も返しません。
</simpara>
<para>
<example>
<title>
<function>eval</function>の例 - 簡単なテキストのマージ
</title>
<programlisting role="php">
<![CDATA[
<?php
$string = 'cup';
$name = 'coffee';
$str = 'This is a $string with my $name in it.<br>';
echo $str;
eval ("\$str = \"$str\";");
echo $str;
?>
]]>
</programlisting>
<para>
上の例は、以下を表示します。
<screen>
<![CDATA[
This is a $string with my $name in it.
This is a cup with my coffee in it.
]]>
</screen>
</para>
</example>
</para>
&tip.ob-capture;
</refsect1>
</refentry>
<refentry id="function.exit">
<refnamediv>
<refname>exit</refname>
<refpurpose>メッセージを出力し、カレントのスクリプトを終了する</refpurpose>
</refnamediv>
<refsect1>
<title>説明</title>
<methodsynopsis>
<type>void</type><methodname>exit</methodname>
<methodparam choice="opt"><type>string</type><parameter>status</parameter></methodparam>
</methodsynopsis>
<note>
<simpara>
この関数は実際には関数ではなく言語構造です。
</simpara>
</note>
<simpara>
<function>exit</function> 関数は、スクリプトの実行を終了します。
終了直前に<parameter>status</parameter>を出力します。
</simpara>
<simpara>
<parameter>status</parameter>が<type>integer</type>の場合、その値
も終了ステータスとして使用されます。
</simpara>
<note>
<simpara>
カレントのCVS版は、<type>integer</type>の場合、
<parameter>status</parameter>を出力しません。
</simpara>
</note>
<note>
<simpara>
関数<function>die</function>は、<function>exit</function>のエイ
リアスです。
</simpara>
</note>
<para>
<example>
<title><function>exit</function>の例</title>
<programlisting role="php">
<![CDATA[
<?php
$filename = '/path/to/data-file';
$file = fopen ($filename, 'r')
or exit("unable to open file ($filename)");
?>
]]>
</programlisting>
<!-- TODO: example with integer exit-statis -->
</example>
</para>
</refsect1>
</refentry>
<refentry id="function.get-browser">
<refnamediv>
<refname>get_browser</refname>
<refpurpose>
ユーザのブラウザの機能を取得する
</refpurpose>
</refnamediv>
<refsect1>
<title>説明</title>
<methodsynopsis>
<type>object</type><methodname>get_browser</methodname>
<methodparam><type>string</type><parameter>
<replaceable><optional>user_agent</optional></replaceable>
</parameter></methodparam>
</methodsynopsis>
<simpara>
<function>get_browser</function> は、ユーザーのブラウザの機能を定
義します。これは、<filename>browscap.ini</filename>ファイルのブラ
ウザ情報を調べることにより行います。デフォルトでは、
$HTTP_USER_AGENTの値が使用されます。しかし、オプションの
<parameter>user_agent</parameter> パラメータを
<function>get_browser</function> に渡すことにより、これを変える
(すなわち、他のブラウザの情報を調べる)ことが可能です。
</simpara>
<simpara>
返される情報はオブジェクトであり、例えば、ブラウザのメジャーおよ
びマイナーバージョン暗号やID文字列、といった様々なデータ要素を含
んでいます。フレーム、JavaScript、クッキー等のような機能に関する
&true;/false の値、マイナーバージョン暗号やID文字列、といった様々な
データ要素を含んでいます。
</simpara>
<simpara>
<filename>browscap.ini</filename> は多くのブラウザに関する情報を
有していますが、データベースを最新に保つのはユーザーによる更新
に依存しています。
ファイルのフォーマット自体を見ればおおよそのことがわかります。
</simpara>
<para>
次の例では、ユーザーのブラウザに関する全ての取得可能な情報
の一覧を作成する手法に関するものです。
<example>
<title><function>get_browser</function>の例</title>
<programlisting role="php">
<![CDATA[
<?php
function list_array ($array) {
while (list ($key, $value) = each ($array)) {
$str .= "<b>$key:</b> $value<br>\n";
}
return $str;
}
echo "$HTTP_USER_AGENT<hr>\n";
$browser = get_browser();
echo list_array ((array) $browser);
?>
]]>
</programlisting>
</example>
</para>
<simpara>
上のスクリプトの出力は、次のようになります。
</simpara>
<programlisting>
<![CDATA[
Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586)<hr>
<b>browser_name_pattern:</b> Mozilla/4\.5.*<br>
<b>parent:</b> Netscape 4.0<br>
<b>platform:</b> Unknown<br>
<b>majorver:</b> 4<br>
<b>minorver:</b> 5<br>
<b>browser:</b> Netscape<br>
<b>version:</b> 4<br>
<b>frames:</b> 1<br>
<b>tables:</b> 1<br>
<b>cookies:</b> 1<br>
<b>backgroundsounds:</b> <br>
<b>vbscript:</b> <br>
<b>javascript:</b> 1<br>
<b>javaapplets:</b> 1<br>
<b>activexcontrols:</b> <br>
<b>beta:</b> <br>
<b>crawler:</b> <br>
<b>authenticodeupdate:</b> <br>
<b>msn:</b> <br>
]]>
</programlisting>
<simpara>
これを動作させるためには、設定ファイルの
<link linkend="ini.sect.browscap">browscap</link> を正しく
<filename>browscap.ini</filename> の場所に設定しておく必要があります。
</simpara>
<simpara>
(<filename>browscap.ini</filename> ファイルを取得できる場所を含む)
より詳細な情報については、
<ulink url="&url.php.faq;">&url.php.faq;</ulink>にあるPHP FAQを参照下さい。
</simpara>
</refsect1>
</refentry>
<refentry id="function.highlight-file">
<refnamediv>
<refname>highlight_file</refname>
<refpurpose>ファイルの構文ハイライト表示</refpurpose>
</refnamediv>
<refsect1>
<title>説明</title>
<methodsynopsis>
<type>bool</type><methodname>highlight_file</methodname>
<methodparam><type>string</type><parameter>filename</parameter></methodparam>
</methodsynopsis>
<simpara>
関数 <function>highlight_file</function>は、
<parameter>filename</parameter>の中のコードをPHP組込の構文ハイラ
イタで定義されたカラーを使用して構文ハイライト表示したものを出力
します。この関数は、成功時に&true;、その他の場合に&false;を返します。
(PHP 4)
</simpara>
<note>
<simpara>
関数 <function>show_source</function> および
<function>highlight_file</function>を使用する場合には、パスワー
ドや潜在的なセキュリティ上の危険を生む類の他の情報のような重要な
情報を不注意で公開してしまわないように注意する必要があります。
</simpara>
</note>
<para>
<example>
<title>URLのソースハイライト表示の作成</title>
<simpara>
引数として指定したスクリプトのコードをハイライト表示できるよう
なURLを設定する際には、適したURLパターンを生成するためにApache
の "ForceType" ディレクティブを使用し、見栄えの良いコー
ドリストを表示するために関数<function>highlight_file</function>
を使用します。
</simpara>
<simpara>
httpd.confに次のような記述を追加します。
</simpara>
<para>
<informalexample>
<programlisting>
<![CDATA[
<Location /source>
ForceType application/x-httpd-php
</Location>
]]>
</programlisting>
</informalexample>
</para>
<simpara>
そして、"source"という名前のファイルを作成し、それをWebのルート
ディレクトリに置きます。
</simpara>
<para>
<programlisting role="php">
<![CDATA[
<HTML>
<HEAD>
<TITLE>Source Display</TITLE>
</HEAD>
<BODY BGCOLOR="white">
<?php
$script = getenv ("PATH_TRANSLATED");
if(!$script) {
echo "<BR><B>ERROR: Script Name needed</B><BR>";
} else {
if (ereg("(\.php|\.inc)$",$script)) {
echo "<H1>Source of: $PATH_INFO</H1>\n<HR>\n";
highlight_file($script);
} else {
echo "<H1>ERROR: Only PHP or include script names are allowed</H1>";
}
}
echo "<HR>Processed: ".date("Y/M/d H:i:s",time());
?>
</BODY>
</HTML>
]]>
</programlisting>
</para>
<simpara>
これにより、"/path/to/script.php"にあるスクリプトのカラー表示を
表示するために以下のURLを使用することができるようになります。
</simpara>
<para>
<informalexample>
<programlisting>
http://your.server.com/source/path/to/script.php
</programlisting>
</informalexample>
</para>
</example>
</para>
&tip.ob-capture;
<simpara>
<function>highlight_string</function>,
<function>show_source</function>も参照下さい。
</simpara>
</refsect1>
</refentry>
<refentry id="function.highlight-string">
<refnamediv>
<refname>highlight_string</refname>
<refpurpose>文字列の構文ハイライト化</refpurpose>
</refnamediv>
<refsect1>
<title>説明</title>
<methodsynopsis>
<type>bool</type><methodname>highlight_string</methodname>
<methodparam><type>string</type><parameter>str</parameter></methodparam>
</methodsynopsis>
<simpara>
<function>highlight_string</function> 関数は、PHP組込みの構文ハイ
ライタで定義されたカラーを使用して<parameter>str</parameter>を構
文ハイライト表示されたものを出力します。
&return.success;
</simpara>
&tip.ob-capture;
<simpara>
<function>highlight_file</function>,
<function>show_source</function>も参照下さい。
</simpara>
</refsect1>
</refentry>
<refentry id="function.ignore-user-abort">
<refnamediv>
<refname>ignore_user_abort</refname>
<refpurpose>
クライアント接続が断となった時にスクリプトの実行を中断するかどう
かを設定する
</refpurpose>
</refnamediv>
<refsect1>
<title>説明</title>
<methodsynopsis>
<type>int</type><methodname>ignore_user_abort</methodname>
<methodparam><type>int</type><parameter>
<replaceable><optional>setting</optional></replaceable>
</parameter></methodparam>
</methodsynopsis>
<simpara>
この関数は、クライアントとの接続断がスクリプトの実行中断を引き起
こすかどうかを設定します。この関数は前の設定を返し、現在の設定を
変えずに現在の設定を返すためだけのために引数なしでコールすること
が可能です。PHPにおける接続処理の詳細な説明に関しては、機能の章の
接続処理の節を参照下さい。
</simpara>
</refsect1>
</refentry>
<refentry id="function.iptcparse">
<refnamediv>
<refname>iptcparse</refname>
<refpurpose>
バイナリIPTC<ulink url="&url.iptc;">&url.iptc;</ulink>
ブロックを処理しシングルタグにする
</refpurpose>
</refnamediv>
<refsect1>
<title>説明</title>
<methodsynopsis>
<type>array</type><methodname>iptcparse</methodname>
<methodparam><type>string</type><parameter>iptcblock</parameter></methodparam>
</methodsynopsis>
<simpara>
この関数は、バイナリIPTCブロックを処理し、シングルタグにします。
tagmakerをインデックス、valueを値とした配列を返します。
エラーの場合またはIPTCデータが見つからない場合、&false;を返します。
例については<function>GetImageSize</function>を参照下さい。
</simpara>
</refsect1>
</refentry>
<refentry id="function.leak">
<refnamediv>
<refname>leak</refname>
<refpurpose>メモリーをリークする</refpurpose>
</refnamediv>
<refsect1>
<title>説明</title>
<methodsynopsis>
<type>void</type><methodname>leak</methodname>
<methodparam><type>int</type><parameter>bytes</parameter></methodparam>
</methodsynopsis>
<simpara>
<function>leak</function> は、指定した量のメモリーをリークします。
</simpara>
<simpara>
この関数は、各リクエストが完了した時に "リークした" メモリーを自動的に
取り除くメモリーマネージャをデバッグする際に便利です。
</simpara>
</refsect1>
</refentry>
<refentry id="function.pack">
<refnamediv>
<refname>pack</refname>
<refpurpose>データをバイナリ文字列にパックする</refpurpose>
</refnamediv>
<refsect1>
<title>説明</title>
<methodsynopsis>
<type>string</type><methodname>pack</methodname>
<methodparam><type>string</type><parameter>format</parameter></methodparam>
<methodparam><type>mixed</type><parameter>
<replaceable><optional>args</optional></replaceable>
</parameter></methodparam>
</methodsynopsis>
<para>
指定された引数を <parameter>format</parameter> に基づいて
バイナリ文字列にパックします。データを含むバイナリ文字列を返します。
</para>
<para>
この関数のアイデアは、Perlからのものであり、フォーマット指定用?ü
ャoPerlと全く同様に動作します。
フォーマット文字列は、フォーマットコードの後にオプションの
反復指定用引数が続いている形式となっています。
反復指定用引数は、整数値または入力データの最後まで反復を指定する
* のどちらかを指定することができます。
a, A, h, H の場合、反復数はそのデータ引数が取得する文字の数
を指定します。
反復数が @ の場合、次のデータを置く場所の絶対位置を表します。
その他の場合、反復数はデータ引数が使われる数を指定し、
結果のバイナリ文字列にパックされます。
現在、実装されているものを以下に示します。
<itemizedlist>
<listitem>
<simpara>
a NUL で埋めた文字列
</simpara>
</listitem>
<listitem>
<simpara>
A 空白で埋めた文字列
</simpara>
</listitem>
<listitem>
<simpara>
h 16進文字列, 下位バイトが先
</simpara>
</listitem>
<listitem>
<simpara>
H 16進文字列, 上位バイトが先
</simpara>
</listitem>
<listitem>
<simpara>
c signed char
</simpara>
</listitem>
<listitem>
<simpara>
C unsigned char
</simpara>
</listitem>
<listitem>
<simpara>
s signed short (常に 16 ビット、マシンバイトオーダー)
</simpara>
</listitem>
<listitem>
<simpara>
S unsigned short (常に 16 ビット、マシンバイトオーダー)
</simpara>
</listitem>
<listitem>
<simpara>
n unsigned short (常に 16 ビット、ビッ°インディアンバイトオーダー)
</simpara>
</listitem>
<listitem>
<simpara>
v unsigned short (常に 16 ビット、リトルインディアンオーダー)
</simpara>
</listitem>
<listitem>
<simpara>
i signed integer (サイズおよびバイトオーダーはマシンに依存)
</simpara>
</listitem>
<listitem>
<simpara>
I unsigned integer (サイズおよびバイトオーダーはマシンに依存)
</simpara>
</listitem>
<listitem>
<simpara>
l signed long (常に 32 ビット、マシンバイトオーダー)
</simpara>
</listitem>
<listitem>
<simpara>
L unsigned long (常に 32 ビット、マシンバイトオーダー)
</simpara>
</listitem>
<listitem>
<simpara>
N unsigned long (常に 32 ビット、ビッグインディアンバイトオーダー)
</simpara>
</listitem>
<listitem>
<simpara>
V unsigned long (常に 32 ビット、リトルインディアンバイトオーダー)
</simpara>
</listitem>
<listitem>
<simpara>
f float (サイズおよび表現はマシン依存)
</simpara>
</listitem>
<listitem>
<simpara>
d double (サイズおよび表現はマシン依存)
</simpara>
</listitem>
<listitem>
<simpara>
x NUL バイト
</simpara>
</listitem>
<listitem>
<simpara>
X 1バイト戻る
</simpara>
</listitem>
<listitem>
<simpara>
@ 絶対位置まで NUL で埋める
</simpara>
</listitem>
</itemizedlist>
<example>
<title>フォーマット文字列のパック</title>
<programlisting role="php">
<![CDATA[
$binarydata = pack ("nvc*", 0x1234, 0x5678, 65, 66);
]]>
</programlisting>
<para>
この結果のバイナリ文字列は、6バイト長であり、
バイト列 0x12, 0x34, 0x78, 0x56, 0x41, 0x42となります。
</para>
</example>
</para>
<para>
符号付及び符号無しの区別は関数 <function>unpack</function>にのみ
影響を与え、関数<function>pack</function>は符号付及び符号無しの
フォーマットコードに関して同じ結果を与えるということに注意して下
さい。
</para>
<para>
PHP は内部的に値をマシン依存の大きさの符号付の
<type>integer</type>値として保持することにも注意して下さい。
このように保持するには大きすぎる符号無しの値を与えた場合、
<type>float</type>に変換する際にしばしば期待外れの結果となります。
</para>
</refsect1>
</refentry>
<refentry id="function.show-source">
<refnamediv>
<refname>show_source</refname>
<refpurpose>ファイルの構文ハイライト表示</refpurpose>
</refnamediv>
<refsect1>
<title>説明</title>
<methodsynopsis>
<type>bool</type><methodname>show_source</methodname>
<methodparam><type>string</type><parameter>filename</parameter></methodparam>
</methodsynopsis>
<simpara>
<function>show_source</function>関数は、組込みのPHP用構文ハイライ
ト表示用に定義された色を使用して<parameter>filename</parameter>の
構文ハイライト表示を出力します。
成功時に&true;、そうでない場合に&false;を返します。(PHP 4)
</simpara>
<simpara>
この関数は、関数<function>highlight_file</function>のエイリアスで
す。
</simpara>
<note>
<simpara>
関数 <function>show_source</function> および
<function>highlight_file</function>を使用する場合には、パスワー
ドや潜在的なセキュリティ上の危険を生む類の他の情報のような重要な
情報を不注意で公開してしまわないように注意する必要があります。
</simpara>
</note>
<simpara>
<function>highlight_string</function>,
<function>highlight_file</function>も参照下さい。
</simpara>
</refsect1>
</refentry>
<refentry id="function.sleep">
<refnamediv>
<refname>sleep</refname>
<refpurpose>実行を遅延させる</refpurpose>
</refnamediv>
<refsect1>
<title>説明</title>
<methodsynopsis>
<type>void</type><methodname>sleep</methodname>
<methodparam><type>int</type><parameter>seconds</parameter></methodparam>
</methodsynopsis>
<simpara>
関数<function>sleep</function>は、<parameter>seconds</parameter>
で与えられた秒数分プログラムの実行を遅延させます。
</simpara>
<simpara>
<function>usleep</function> も参照のこと。
</simpara>
</refsect1>
</refentry>
<refentry id="function.uniqid">
<refnamediv>
<refname>uniqid</refname>
<refpurpose>ユニークなIDを生成する</refpurpose>
</refnamediv>
<refsect1>
<title>説明</title>
<methodsynopsis>
<type>string</type><methodname>uniqid</methodname>
<methodparam><type>string</type><parameter>prefix</parameter></methodparam>
<methodparam><type>bool</type><parameter>
<replaceable><optional>lcg</optional></replaceable>
</parameter></methodparam>
</methodsynopsis>
<simpara>
<function>uniqid</function>は、ミリ秒単位の現在時刻に基づき先頭辞
(prefix)を付けたユニークなIDを返します。いくつかのホスト上で同
時にIDを生成させる場合、全く同じミリ秒のIDが生成されるのを防ぐの
にprefixが有用です。<parameter>prefix</parameter>には114文字まで
の長さを指定することができます。
</simpara>
<simpara>
オプションの <parameter>lcg</parameter> パラメータが &true; の場合、
<function>uniqid</function> は、より結果をユニークにするために
"combined LCG" を返り値の最後に追加します。
</simpara>
<simpara>
<parameter>prefix</parameter> を空とした場合、返される文字列の長さは、
13文字となります。<parameter>lcg</parameter> が&true;の場合は、
23文字となります。
</simpara>
<note>
<simpara>
<parameter>lcg</parameter> パラメータは、PHP 4またはPHP 3.0.13以
降でのみ使用可能です。
</simpara>
</note>
<para>
ユニークなIDまたはトークンが必要な場合、そして、ネットワーク経由
でユーザーにそのトークンを渡そうとする場合(例えば、セッションクッ
キー)、次の例のようにするのが推奨されます。
<informalexample>
<programlisting role="php">
<![CDATA[
$token = md5(uniqid("")); // ランダム要素なし
$better_token = md5(uniqid(rand(),1)); // 推測が困難であり、より優れている。
]]>
</programlisting>
</informalexample>
</para>
<simpara>
この例は、極めて予測困難な 32 文字のID(128ビット16進数)を
作成します。
</simpara>
</refsect1>
</refentry>
<refentry id="function.unpack">
<refnamediv>
<refname>unpack</refname>
<refpurpose>バイナリ文字列からデータを切出します</refpurpose>
</refnamediv>
<refsect1>
<title>説明</title>
<methodsynopsis>
<type>array</type><methodname>unpack</methodname>
<methodparam><type>string</type><parameter>format</parameter></methodparam>
<methodparam><type>string</type><parameter>data</parameter></methodparam>
</methodsynopsis>
<para>
<parameter>format</parameter>に基づきバイナリ文字列から配列に分解
します。バイナリ文字列の切出された要素を保持する配列を返します。
</para>
<para>
<function>unpack</function>の動作はPerlとわずかに異なり、
切出されたデータは連想配列に保存されます。
実行する際には、別のフォーマットコードとし、スラッシュ/で
区切る必要があります。
<example>
<title>フォーマット文字列の<function>unpack</function></title>
<programlisting role="php">
<![CDATA[
$array = unpack ("c2chars/nint", $binarydata);
]]>
</programlisting>
<para>
結果の配列は、エントリ "chars1","chars2","int" を保持します。
</para>
</example>
</para>
<para>
フォーマットコードに関する説明は、
<function>pack</function> も参照下さい。
</para>
<para>
PHP は内部的に整数を符号付で保持します。
大きな値の unsigned long を切出した場合、PHP の内部で保持された値は、
同じ大きさの符号付き整数となり、符号無しを指定して切出された場合でも
結果は負の数となります。
</para>
</refsect1>
</refentry>
<refentry id="function.usleep">
<refnamediv>
<refname>usleep</refname>
<refpurpose>マイクロ秒単位で実行を遅延する</refpurpose>
</refnamediv>
<refsect1>
<title>説明</title>
<methodsynopsis>
<type>void</type><methodname>usleep</methodname>
<methodparam><type>int</type><parameter>micro_seconds</parameter></methodparam>
</methodsynopsis>
<simpara>
<function>usleep</function>関数は、指定した
<parameter>micro_seconds</parameter>の時間だけプログラムの実行を
遅延させます。
</simpara>
<simpara>
<function>sleep</function>も参照下さい。
</simpara>
<note>
<simpara>
この関数はWindowsシステムでは動作しません。
</simpara>
</note>
</refsect1>
</refentry>
</reference>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"../../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
-->
|