cvs: phpdoc /ja/functions network.xml nis.xml oci8.xml openssl.xml oracle.xml outcontrol.xml pcntl.xml pcre.xml pdf.xml pfpro.xml pgsql.xml posix.xml
printer.xml pspell.xml readline.xml recode.xml regex.xml

From: Date: Sat, 26 Jan 2002 15:38:35 +0000
Subject: cvs: phpdoc /ja/functions network.xml nis.xml oci8.xml openssl.xml oracle.xml outcontrol.xml pcntl.xml pcre.xml pdf.xml pfpro.xml pgsql.xml posix.xml
printer.xml pspell.xml readline.xml recode.xml regex.xml
Groups: php.doc 
Request: Send a blank email to phpdoc+get-969341636@lists.php.net to get a copy of this message
hirokawa Sat Jan 26 10:38:35 2002 EDT Modified files: /phpdoc/ja/functions network.xml nis.xml oci8.xml openssl.xml oracle.xml outcontrol.xml pcntl.xml pcre.xml pdf.xml pfpro.xml pgsql.xml posix.xml printer.xml pspell.xml readline.xml recode.xml regex.xml Log: update translation.

Index: phpdoc/ja/functions/network.xml diff -u phpdoc/ja/functions/network.xml:1.23 phpdoc/ja/functions/network.xml:1.24 --- phpdoc/ja/functions/network.xml:1.23 Sat Jan 26 03:55:51 2002 +++ phpdoc/ja/functions/network.xml Sat Jan 26 10:38:31 2002 @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<!-- $Revision: 1.23 $ --> +<!-- $Revision: 1.24 $ --> <reference id="ref.network"> - <title>ネットワーク関数</title> + <title>ネットワーク関数(network)</title> <titleabbrev>ネットワーク</titleabbrev> <refentry id="function.checkdnsrr"> @@ -213,16 +213,20 @@ <example> <title><function>fsockopen</function>の例</title> <programlisting role="php"> +<![CDATA[ +<?php $fp = fsockopen ("www.php.net", 80, $errno, $errstr, 30); if (!$fp) { - echo "$errstr ($errno)&lt;br&gt;\n"; + echo "$errstr ($errno)<br>\n"; } else { - fputs ($fp, "GET / HTTP/1.0\r\n\r\n"); - while (!feof($fp)) { - echo fgets ($fp,128); - } - fclose ($fp); + fputs ($fp, "GET / HTTP/1.0\r\nHost: www.php.net\r\n\r\n"); + while (!feof($fp)) { + echo fgets ($fp,128); + } + fclose ($fp); } +?> +]]> </programlisting> </example> 以下の例は、自分のマシンのUDPサービス "daytime" (ポート13)から日 @@ -230,16 +234,18 @@ <example> <title>UDP接続の使用法</title> <programlisting role="php"> -&lt;?php +<![CDATA[ +<?php $fp = fsockopen("udp://127.0.0.1", 13, $errno, $errstr); if (!$fp) { - echo "ERROR: $errno - $errstr&lt;br&gt;\n"; + echo "ERROR: $errno - $errstr<br>\n"; } else { fwrite($fp,"\n"); echo fread($fp, 26); fclose($fp); } -?&gt; +?> +]]> </programlisting> </example> <note> @@ -511,12 +517,14 @@ <example> <title><function>ip2long</function>の例</title> <programlisting role="php"> -&lt;?php +<![CDATA[ +<?php $ip = gethostbyname("www.php.net"); -$out = "The following URLs are equivalent:&lt;br&gt;\n"; -$out .= "http://www.php.net/, http://".$ip."/, and http://".ip2long($ip)."/&lt;br&gt;\n"; +$out = "The following URLs are equivalent:<br>\n"; +$out .= "http://www.php.net/, http://".$ip."/, and http://".sprintf("%u",ip2long($ip))."/<br>\n"; echo $out; -?&gt; +?> +]]> </programlisting> </example> </para> @@ -526,11 +534,13 @@ <example> <title>IPアドレスの表示</title> <programlisting role="php"> -&lt;?php +<![CDATA[ +<?php $ip = gethostbyname("www.php.net"); -printf ("%u\n", ip2long ($ip)); +printf("%u\n", ip2long($ip)); echo $out; -?&gt; +?> +]]> </programlisting> </example> </para> @@ -870,8 +880,9 @@ <example> <title><function>socket_set_timeout</function>の例</title> <programlisting role="php"> -&lt;?php -$fp = fsockopen("http://www.php.net", 80); +<![CDATA[ +<?php +$fp = fsockopen("www.php.net", 80); if(!$fp) { echo "Unable to open\n"; } else { @@ -883,7 +894,8 @@ fclose($fp); print $res; } -?&gt; +?> +]]> </programlisting> </example> </para> @@ -971,11 +983,12 @@ <example> <title><function>syslog</function>の使用例</title> <programlisting role="php"> -&lt;?php +<![CDATA[ +<?php define_syslog_variables(); // syslogをオープンし、プロセスIDをインクルードし、標準エラー出力にも // ログを出力します。そして、ユーザ定義のログ記録機構を使用します。 -openlog(&quot;myScripLog&quot;, LOG_PID | LOG_PERROR, LOG_LOCAL0); +openlog("myScripLog", LOG_PID | LOG_PERROR, LOG_LOCAL0); // 何らかのコード @@ -984,12 +997,13 @@ } else { // クライアントは未認証! // ログを記録する - $access = date(&quot;Y/m/d H:i:s&quot;); - syslog(LOG_WARNING,&quot;Unauthorized client: $access $REMOTE_ADDR ($HTTP_USER_AGENT)&quot;); + $access = date("Y/m/d H:i:s"); + syslog(LOG_WARNING,"Unauthorized client: $access $REMOTE_ADDR ($HTTP_USER_AGENT)"); } closelog(); -?&gt; +?> +]]> </programlisting> </example> ユーザ定義のログハンドラの設定に関する情報については、UNIXマニュ Index: phpdoc/ja/functions/nis.xml diff -u phpdoc/ja/functions/nis.xml:1.13 phpdoc/ja/functions/nis.xml:1.14 --- phpdoc/ja/functions/nis.xml:1.13 Wed Dec 12 15:53:25 2001 +++ phpdoc/ja/functions/nis.xml Sat Jan 26 10:38:31 2002 @@ -1,4 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> +<!-- $Revision: 1.14 $ --> <reference id="ref.nis"> <title>YP/NIS関数</title> <titleabbrev>YP/NIS</titleabbrev> @@ -31,10 +32,9 @@ <funcsynopsis> <funcprototype> <funcdef>int <function>yp_get_default_domain</function></funcdef> - <paramdef>void <parameter></parameter></paramdef> + <void/> </funcprototype> </funcsynopsis> - <para> <function>yp_get_default_domain</function> は、ノードのデフォルト ドメインまたは &false; を返します。返り値は、この後の NIS コールで @@ -49,22 +49,21 @@ <example> <title>デフォルトドメインの例</title> <programlisting role="php"> -&lt;?php +<![CDATA[ +<?php $domain = yp_get_default_domain(); - -echo "デフォルトのNIS ドメイン: " . $domain; +echo "Default NIS domain is: " . $domain; ?> +]]> </programlisting> </example> </para> - - <para> - <function>yp-get-default-domain</function> も参照下さい。 <!-- - linkend="function.yp-errno">yp_errno</link> and <link - linkend="function.yp-err-string">yp_err_string</link> ---> + <para> + See also: <link linkend="function.yp-errno">yp_errno</link> and + <link linkend="function.yp-err-string">yp_err_string</link> </para> +--> </refsect1> </refentry> @@ -82,25 +81,20 @@ <paramdef>string <parameter>map</parameter></paramdef> </funcprototype> </funcsynopsis> - <para> <function>yp_order</function> は、マップの呼出番号または&false; を 返します。 </para> <para> <example> - <title>NIS 呼出番号の例</title> + <title>NIS呼出番号の例</title> <programlisting role="php"> -&lt;?php +<![CDATA[ +<?php $number = yp_order($domain,$mapname); - - if(!$number) { - echo "エントリが見つかりません\n"; - <!-- echo yp_errno() . ": " . yp_err_string(); --> - } - - echo "このマップの呼出番号は、" . $number . "です。"; + echo "Order number for this map is: " . $number; ?> +]]> </programlisting> </example> </para> @@ -138,11 +132,12 @@ <example> <title>NIS マスターの例</title> <programlisting role="php"> -&lt;?php - $number = yp_master ($domain, $mapname); - - echo "このNISマップのマスタ: " . $master; +<![CDATA[ +<?php +$number = yp_master ($domain, $mapname); +echo "Master for this map is: " . $master; ?> +]]> </programlisting> </example> </para> @@ -180,11 +175,12 @@ <example> <title>NIS 検索の例</title> <programlisting role="php"> -&lt;?php +<![CDATA[ +<?php $entry = yp_match ($domain, "passwd.byname", "joe"); - -echo "検索にマッチしたエントリ: " . $entry; +echo "Matched entry is: " . $entry; ?> +]]> </programlisting> </example> </para> @@ -200,7 +196,6 @@ linkend="function.yp-err-string">yp_err_string</link> --> </para> - </refsect1> </refentry> @@ -220,7 +215,6 @@ <paramdef>string <parameter>map</parameter></paramdef> </funcprototype> </funcsynopsis> - <para> <function>yp_first</function> は、ドメイン <parameter>domain</parameter>のマップ<parameter>map</parameter>か @@ -230,13 +224,14 @@ <example> <title>NIS first の例</title> <programlisting role="php"> -&lt;?php +<![CDATA[ +<?php $entry = yp_first($domain, "passwd.byname"); $key = $entry ["key"]; $value = $entry ["value"]; -echo "このマップの最初のエントリにはキー " . $key . " と値 " . $value - . "があります。"; +echo "First entry in this map has key " . $key . " and value " . $value; ?> +]]> </programlisting> </example> </para> @@ -273,18 +268,21 @@ <example> <title>NIS next の例</title> <programlisting role="php"> -&lt;?php +<![CDATA[ +<?php $entry = yp_next ($domain, "passwd.byname", "joe"); -if(!$entry) { - echo yp_errno() . ": " . yp_err_string(); +if (!$entry) { + echo "No more entries found\n"; + <!-- echo yp_errno() . ": " . yp_err_string(); --> } -$key = key($entry); +$key = key ($entry); -echo "joe の次のエントリのキーは、" . $key - . " 、値は " . $entry[$key] . "です。"; +echo "The next entry after joe has key " . $key + . " and value " . $entry[$key]; ?> +]]> </programlisting> </example> </para> @@ -298,7 +296,6 @@ </refsect1> </refentry> -<!-- Function doesn't exist <refentry id="function.yp-errno"> <refnamediv> <refname>yp_errno</refname> @@ -344,10 +341,6 @@ </refsect1> </refentry> ---> - -<!-- Function doesn't exist - <refentry id="function.yp-err-string"> <refnamediv> <refname>yp_err_string</refname> @@ -359,30 +352,75 @@ <funcsynopsis> <funcprototype> <funcdef>string <function>yp_err_string</function></funcdef> - <paramdef>void <parameter></parameter></paramdef> + <void/> </funcprototype> </funcsynopsis> - <para> - <function>yp_err_string</function> は、前の操作に関するエラーメッセージ - を返します。何が悪いかを正確に調べる際に便利です。</para> - + <function>yp_err_string</function> は、前の操作に関するエラーメッ + セージを返します。何が悪いかを正確に調べる際に便利です。 + </para> <para> <example> <title>NIS エラーの例</title> <programlisting role="php"> -&lt;?php +<![CDATA[ +<?php echo "Error: " . yp_err_string(); ?> +]]> </programlisting> - </example></para> + </example> + </para> <para> <function>yp_errno</function>も参照下さい。 </para> </refsect1> </refentry> ---> + <refentry id='function.yp-all'> + <refnamediv> + <refname>yp_all</refname> + <refpurpose> + マップを走査し、各エントリの関数をコールする + </refpurpose> + </refnamediv> + <refsect1> + <title>説明</title> + <funcsynopsis> + <funcprototype> + <funcdef>void <function>yp_all</function></funcdef> + <paramdef>string <parameter>domain</parameter></paramdef> + <paramdef>string <parameter>map</parameter></paramdef> + <paramdef>string <parameter>callback</parameter></paramdef> + </funcprototype> + </funcsynopsis> + <para> + &warn.undocumented.func; + </para> + </refsect1> + </refentry> + + <refentry id='function.yp-cat'> + <refnamediv> + <refname>yp_cat</refname> + <refpurpose> + エントリマップを含む配列を返す + </refpurpose> + </refnamediv> + <refsect1> + <title>説明</title> + <funcsynopsis> + <funcprototype> + <funcdef>array <function>yp_cat</function></funcdef> + <paramdef>string <parameter>domain</parameter></paramdef> + <paramdef>string <parameter>map</parameter></paramdef> + </funcprototype> + </funcsynopsis> + <para> + &warn.undocumented.func; + </para> + </refsect1> + </refentry> </reference> Index: phpdoc/ja/functions/oci8.xml diff -u phpdoc/ja/functions/oci8.xml:1.19 phpdoc/ja/functions/oci8.xml:1.20 --- phpdoc/ja/functions/oci8.xml:1.19 Wed Dec 12 15:53:25 2001 +++ phpdoc/ja/functions/oci8.xml Sat Jan 26 10:38:33 2002 @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> - +<!-- $Revision: 1.20 $ --> <reference id="ref.oci8"> <title>Oracle 8 関数</title> <titleabbrev>OCI8</titleabbrev> @@ -65,15 +65,17 @@ </para> <para> <informalexample> - <programlisting> -> ldd /www/apache/bin/httpd + <screen> +<![CDATA[ +# ldd /www/apache/bin/httpd libpthread.so.0 => /lib/libpthread.so.0 (0x4001c000) libm.so.6 => /lib/libm.so.6 (0x4002f000) libcrypt.so.1 => /lib/libcrypt.so.1 (0x4004c000) libdl.so.2 => /lib/libdl.so.2 (0x4007a000) libc.so.6 => /lib/libc.so.6 (0x4007e000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000) - </programlisting> +]]> + </screen> </informalexample> </para> <para> @@ -82,13 +84,15 @@ </para> <para> <informalexample> - <programlisting> -> cd /usr/src/apache_1.3.xx -> make clean -> LIBS=-lpthread ./config.status -> make -> make install - </programlisting> + <screen> +<![CDATA[ +# cd /usr/src/apache_1.3.xx +# make clean +# LIBS=-lpthread ./config.status +# make +# make install +]]> + </screen> </informalexample> </para> </note> @@ -96,7 +100,8 @@ <example> <title>OCIに関するヒント</title> <programlisting role="php"> -&lt;?php +<![CDATA[ +<?php // by sergo@bacup.ru // コマンドの実行を遅延させるには、オプション OCI_DEFAULT を使用して @@ -114,11 +119,13 @@ field2 = empty_clob()) returning field2 into :field2"; OCIParse($conn, $sql); $clob = OCINewDescriptor($conn, OCI_D_LOB); -OCIBindByName ($stmt, ":field2", &amp;$clob, -1, OCI_B_CLOB); +OCIBindByName ($stmt, ":field2", &$clob, -1, OCI_B_CLOB); OCIExecute($stmt, OCI_DEFAULT); $clob->save ("some text"); +OCICommit($conn); -?&gt; +?> +]]> </programlisting> </example> </para> @@ -128,7 +135,8 @@ <example> <title>ストアドプロシージャの使用法</title> <programlisting role="php"> -&lt;?php +<![CDATA[ +<?php // by webmaster@remoterealty.com $sth = OCIParse ( $dbh, "begin sp_newaddress( :address_id, '$firstname', '$lastname', '$company', '$address1', '$address2', '$city', '$state', @@ -142,44 +150,13 @@ OCIBindByName ( $sth, ":error_code", $errorcode, 10 ); OCIExecute ( $sth ); -?&gt; +?> +]]> </programlisting> </example> </para> </partintro> -<!-- - -OCIBindByName -OCIDefineByName -OCIColumnIsNULL -OCIColumnName -OCIColumnSize -OCIColumnType -OCIExecute -OCIFetch -OCIFetchInto -OCIFetchStatement -OCIInternalDebug -OCILogoff -OCILogon -OCIPLogon -OCINLogon -OCIError -OCICommit -OCIRollback -OCINewCursor -OCINewDescriptor -OCIRowCount -OCINumCols -OCIParse -OCIResult -OCIServerVersion -OCIStatementType -OCIFreeStatement -OCIFreeCursor ---> - <refentry id="function.ocidefinebyname"> <refnamediv> <refname>OCIDefineByName</refname> @@ -192,7 +169,7 @@ <funcdef>int <function>OCIDefineByName</function></funcdef> <paramdef>int <parameter>stmt</parameter></paramdef> <paramdef>string <parameter>Column-Name</parameter></paramdef> - <paramdef>mixed &amp;<parameter>variable</parameter></paramdef> + <paramdef>mixed <parameter>variable</parameter></paramdef> <paramdef>int <parameter> <replaceable><optional>type</optional></replaceable> @@ -210,16 +187,16 @@ select 文にない変数を定義する場合は、エラーは発生しないでしょう! </para> <para> - 抽象 Datatype (LOB/ROWID/BFILE) を定義する必要がある場合、 - まず <function>OCINewDescriptor</function> 関数を用いてその - 領域を確保する必要があります。 - <function>OCIBindByName</function> 関数も参照下さい。 - + 抽象 Datatype (LOB/ROWID/BFILE) を定義する必要がある場合、 + まず <function>OCINewDescriptor</function> 関数を用いてその + 領域を確保する必要があります。 + <function>OCIBindByName</function> 関数も参照下さい。 </para> - <example> + <example> <title>OCIDefineByName</title> <programlisting> -&lt;?php +<![CDATA[ +<?php /* OCIDefineByPos の例 thies@thieso.net (980219) */ $conn = OCILogon("scott","tiger"); @@ -228,8 +205,8 @@ /* the define MUST be done BEFORE ociexecute! */ -OCIDefineByName($stmt,"EMPNO",&amp;$empno); -OCIDefineByName($stmt,"ENAME",&amp;$ename); +OCIDefineByName($stmt,"EMPNO",$empno); +OCIDefineByName($stmt,"ENAME",$ename); OCIExecute($stmt); @@ -240,8 +217,10 @@ OCIFreeStatement($stmt); OCILogoff($conn); -?></programlisting></example> - +?> +]]> + </programlisting> + </example> </refsect1> </refentry> @@ -258,7 +237,7 @@ <paramdef>int <parameter>stmt</parameter></paramdef> <paramdef>string <parameter>ph_name</parameter></paramdef> <paramdef>mixed &amp;<parameter>variable</parameter></paramdef> - <paramdef>int<parameter>length</parameter></paramdef> + <paramdef>int <parameter>length</parameter></paramdef> <paramdef>int <parameter> <replaceable><optional>type</optional></replaceable> @@ -278,22 +257,23 @@ ます。 </para> <para> - 抽象データ型 (LOB/ROWID/BFILE) をバインドする必要がある場合、 - まず <function>OCINewDescriptor</function> 関数を使用してこれを確保する - 必要があります。 - <parameter>length</parameter> は抽象データ型用には使用されず、-1 を設定する必要があります。 - <parameter>type</parameter> 変数は使用したいディスクリプタの種類を Oracle に伝えます。 - 使用可能な値は次のようになります。: OCI_B_FILE (Binary-File), OCI_B_CFILE - (Character-File), OCI_B_CLOB (Character-LOB), OCI_B_BLOB - (Binary-LOB) ,OCI_B_ROWID (ROWID) + 抽象データ型 (LOB/ROWID/BFILE) をバインドする必要がある場合、まず + <function>OCINewDescriptor</function> 関数を使用してこれを確保する + 必要があります。<parameter>length</parameter> は抽象データ型用には + 使用されず、-1 を設定する必要があります。 + <parameter>type</parameter> 変数は使用したいディスクリプタの種類 + をOracle に伝えます。使用可能な値は次のようになります。: + OCI_B_FILE (Binary-File), OCI_B_CFILE (Character-File), OCI_B_CLOB + (Character-LOB), OCI_B_BLOB (Binary-LOB) ,OCI_B_ROWID (ROWID) </para> <example> <title>OCIDefineByName</title> <programlisting> -&lt;?php +<![CDATA[ +<?php /* OCIBindByPos の例 thies@thieso.net (980221) - - 3 レコードを emp に挿入し、挿入の直後にレコードを更新するために ROWID を使用します。 + 3レコードをempに挿入し、挿入の直後にレコードを更新するために + ROWIDを使用します。 */ $conn = OCILogon("scott","tiger"); @@ -306,13 +286,13 @@ $rowid = OCINewDescriptor($conn,OCI_D_ROWID); -OCIBindByName($stmt,":empno",&amp;$empno,32); -OCIBindByName($stmt,":ename",&amp;$ename,32); -OCIBindByName($stmt,":rid",&amp;$rowid,-1,OCI_B_ROWID); +OCIBindByName($stmt,":empno",&$empno,32); +OCIBindByName($stmt,":ename",&$ename,32); +OCIBindByName($stmt,":rid",&$rowid,-1,OCI_B_ROWID); $update = OCIParse($conn,"update emp set sal = :sal where ROWID = :rid"); -OCIBindByName($update,":rid",&amp;$rowid,-1,OCI_B_ROWID); -OCIBindByName($update,":sal",&amp;$sal,32); +OCIBindByName($update,":rid",&$rowid,-1,OCI_B_ROWID); +OCIBindByName($update,":sal",&$sal,32); $sal = 10000; @@ -328,7 +308,7 @@ $stmt = OCIParse($conn,"select * from emp where empno in (1111,2222,3333)"); OCIExecute($stmt); -while (OCIFetchInto($stmt,&amp;$arr,OCI_ASSOC)) { +while (OCIFetchInto($stmt,&$arr,OCI_ASSOC)) { var_dump($arr); } OCIFreeStatement($stmt); @@ -340,6 +320,7 @@ OCILogoff($conn); ?> +]]> </programlisting> </example> <warning> @@ -395,16 +376,16 @@ <example> <title>OCILogon</title> <programlisting> -&lt;?php -print "&lt;HTML>&lt;PRE>"; +<![CDATA[ +<?php +print "<HTML><PRE>"; $db = ""; $c1 = ocilogon("scott","tiger",$db); $c2 = ocilogon("scott","tiger",$db); function create_table($conn) -{ - $stmt = ociparse($conn,"create table scott.hallo (test varchar2(64))"); +{ $stmt = ociparse($conn,"create table scott.hallo (test varchar2(64))"); ociexecute($stmt); echo $conn." created table\n\n"; } @@ -416,8 +397,7 @@ } function insert_data($conn) -{ - $stmt = ociparse($conn,"insert into scott.hallo +{ $stmt = ociparse($conn,"insert into scott.hallo values('$conn' || ' ' || to_char(sysdate,'DD-MON-YY HH24:MI:SS'))"); ociexecute($stmt,OCI_DEFAULT); echo $conn." inserted hallo\n\n"; @@ -431,7 +411,7 @@ function commit($conn) { ocicommit($conn); - echo $conn." commited\n\n"; + echo $conn." committed\n\n"; } function rollback($conn) @@ -444,51 +424,56 @@ ociexecute($stmt,OCI_DEFAULT); echo $conn."----selecting\n\n"; while (ocifetch($stmt)) - echo $conn." &lt;".ociresult($stmt,"TEST").">\n\n"; + echo $conn." <".ociresult($stmt,"TEST").">\n\n"; echo $conn."----done\n\n"; } create_table($c1); -insert_data($c1); // c1 を用いて行を挿入 -insert_data($c2); // c2 を用いて行を挿入 +insert_data($c1); // Insert a row using c1 +insert_data($c2); // Insert a row using c2 -select_data($c1); // 両方の挿入の結果を返す +select_data($c1); // Results of both inserts are returned select_data($c2); -rollback($c1); // c1 を用いてロールバック +rollback($c1); // Rollback using c1 -select_data($c1); // 両方の挿入がロールバックされた +select_data($c1); // Both inserts have been rolled back select_data($c2); -insert_data($c2); // c2 を用いて行を挿入 -commit($c2); // c2 を用いてコミット +insert_data($c2); // Insert a row using c2 +commit($c2); // commit using c2 -select_data($c1); // 挿入 c2 の結果が返される +select_data($c1); // result of c2 insert is returned -delete_data($c1); // c1 を用いてテーブルの全ての行を削除 -select_data($c1); // 行を返さない -select_data($c2); // 行を返さない -commit($c1); // c1 を用いてコミット +delete_data($c1); // delete all rows in table using c1 +select_data($c1); // no rows returned +select_data($c2); // no rows returned +commit($c1); // commit using c1 -select_data($c1); // 行を返さない -select_data($c2); // 行を返さない +select_data($c1); // no rows returned +select_data($c2); // no rows returned drop_table($c1); -print "&lt;/PRE>&lt;/HTML>"; -?></programlisting></example></para> +print "</PRE></HTML>"; +?> +]]> + </programlisting> + </example> + </para> <simpara> <function>OCIPLogon</function> および - <function>OCINLogon</function> も参照下さい。</simpara> + <function>OCINLogon</function> も参照下さい。 + </simpara> </refsect1> </refentry> - + <refentry id="function.ociplogon"> <refnamediv> <refname>OCIPLogon</refname> <refpurpose> - 持続的接続を使用してOracle データベースに接続、ログオンする。 - 新しいセッションを返す。 + 持続的接続を使用してOracle データベースに接続、ログオンする。 + 新しいセッションを返す。 </refpurpose> </refnamediv> <refsect1> @@ -516,7 +501,8 @@ </para> <simpara> <function>OCILogon</function> および - <function>OCINLogon</function> も参照下さい。</simpara> + <function>OCINLogon</function> も参照下さい。 + </simpara> </refsect1> </refentry> @@ -564,94 +550,89 @@ 以下の例は、接続がどのように分割されるかを示すものです。 <example> <title>OCINLogon</title> - <programlisting role="php"> -&lt;?php -print "&lt;HTML>&lt;PRE>"; + <programlisting> +<![CDATA[ +<?php +print "<HTML><PRE>"; $db = ""; -$c1 = ocilogon ("scott", "tiger", $db); -$c2 = ocinlogon ("scott", "tiger", $db); +$c1 = ocilogon("scott","tiger",$db); +$c2 = ocinlogon("scott","tiger",$db); function create_table($conn) -{ - $stmt = ociparse ($conn, "create table scott.hallo (test - varchar2(64))"); - ociexecute ($stmt); +{ $stmt = ociparse($conn,"create table scott.hallo (test +varchar2(64))"); + ociexecute($stmt); echo $conn." created table\n\n"; } function drop_table($conn) -{ - $stmt = ociparse ($conn,"drop table scott.hallo"); - ociexecute ($stmt); +{ $stmt = ociparse($conn,"drop table scott.hallo"); + ociexecute($stmt); echo $conn." dropped table\n\n"; } function insert_data($conn) -{ - $stmt = ociparse($conn,"insert into scott.hallo values('$conn' || - ' ' || to_char(sysdate,'DD-MON-YY HH24:MI:SS'))"); - ociexecute ($stmt,OCI_DEFAULT); +{ $stmt = ociparse($conn,"insert into scott.hallo + values('$conn' || ' ' || to_char(sysdate,'DD-MON-YY HH24:MI:SS'))"); + ociexecute($stmt,OCI_DEFAULT); echo $conn." inserted hallo\n\n"; } function delete_data($conn) -{ - $stmt = ociparse ($conn,"delete from scott.hallo"); - ociexecute ($stmt,OCI_DEFAULT); +{ $stmt = ociparse($conn,"delete from scott.hallo"); + ociexecute($stmt,OCI_DEFAULT); echo $conn." deleted hallo\n\n"; } function commit($conn) -{ - ocicommit($conn); - echo $conn." commited\n\n"; +{ ocicommit($conn); + echo $conn." committed\n\n"; } function rollback($conn) -{ - ocirollback($conn); +{ ocirollback($conn); echo $conn." rollback\n\n"; } function select_data($conn) -{ - $stmt = ociparse ($conn, "select * from scott.hallo"); - ociexecute ($stmt, OCI_DEFAULT); +{ $stmt = ociparse($conn,"select * from scott.hallo"); + ociexecute($stmt,OCI_DEFAULT); echo $conn."----selecting\n\n"; while (ocifetch($stmt)) - echo $conn." &lt;".ociresult($stmt,"TEST").">\n\n"; + echo $conn." <".ociresult($stmt,"TEST").">\n\n"; echo $conn."----done\n\n"; } -create_table ($c1); -insert_data ($c1); +create_table($c1); +insert_data($c1); -select_data ($c1); -select_data ($c2); +select_data($c1); +select_data($c2); -rollback ($c1); +rollback($c1); -select_data ($c1); -select_data ($c2); +select_data($c1); +select_data($c2); -insert_data ($c2); -commit ($c2); +insert_data($c2); +commit($c2); -select_data ($c1); +select_data($c1); -delete_data ($c1); -select_data ($c1); -select_data ($c2); -commit ($c1); +delete_data($c1); +select_data($c1); +select_data($c2); +commit($c1); -select_data ($c1); -select_data ($c2); +select_data($c1); +select_data($c2); -drop_table ($c1); -print "&lt;/PRE>&lt;/HTML>"; +drop_table($c1); +print "</PRE></HTML>"; ?> +]]> </programlisting> </example> </para> @@ -782,8 +763,9 @@ </para> <example> <title>OCINewDescriptor</title> - <programlisting role="php"> -&lt;?php + <programlisting> +<![CDATA[ +<?php /* このスクリプトは HTML フォームからコールされる前提で作成 * されており、$user, $passwor, $table, $where, $commitsize * がフォームから渡されることを前提にしています。 @@ -794,7 +776,7 @@ $conn = OCILogon($user, $password); $stmt = OCIParse($conn,"select rowid from $table $where"); $rowid = OCINewDescriptor($conn,OCI_D_ROWID); - OCIDefineByName($stmt,"ROWID",&amp;$rowid); + OCIDefineByName($stmt,"ROWID",$rowid); OCIExecute($stmt); while ( OCIFetch($stmt) ) { $nrows = OCIRowCount($stmt); @@ -810,29 +792,32 @@ print "$nrows deleted...\n"; OCIFreeStatement($stmt); OCILogoff($conn); -?> +?> +]]> </programlisting> <programlisting> -&lt;?php +<![CDATA[ +<?php /* このスクリプトやLOB カラムにファイルをアップロードする例を示します。 * LOBカラムにアップロードを行うこの例に関するフォームは、 - * &lt;input type="file" name="lob_upload"> + * <form action="upload.php3" method="post" enctype="multipart/form-data"> + * <input type="file" name="lob_upload"> * ... のようなものが使用されます。 */ if(!isset($lob_upload) || $lob_upload == 'none'){ ?> -&lt;form action="upload.php3" method="post" enctype="multipart/form-data"> -Upload file: &lt;input type="file" name="lob_upload">&lt;br> -&lt;input type="submit" value="Upload"> - &lt;input type="reset"> -&lt;/form> -&lt;?php +<form action="upload.php3" method="post" enctype="multipart/form-data"> +Upload file: <input type="file" name="lob_upload"><br> +<input type="submit" value="Upload"> - <input type="reset"> +</form> +<?php } else { // $lob_upload はアップロードファイルのテンポラリファイル名を有しています $conn = OCILogon($user, $password); $lob = OCINewDescriptor($conn, OCI_D_LOB); $stmt = OCIParse($conn,"insert into $table (id, the_blob) values(my_seq.NEXTVAL, EMPTY_BLOB()) returning the_blob into :the_blob"); - OCIBindByName($stmt, ':the_blob', &amp;$lob, -1, OCI_B_BLOB); + OCIBindByName($stmt, ':the_blob', $lob, -1, OCI_B_BLOB); OCIExecute($stmt); if($lob->savefile($lob_upload)){ OCICommit($conn); @@ -845,6 +830,39 @@ OCILogoff($conn); } ?> +]]> + </programlisting> + </example> + <example> + <title>OCINewDescriptor</title> + <programlisting> +<![CDATA[ +<?php + /* Calling PL/SQL stored procedures which contain clobs as input + * parameters (PHP 4 >= 4.0.6). + * Example PL/SQL stored procedure signature is: + * + * PROCEDURE save_data + * Argument Name Type In/Out Default? + * ------------------------------ ----------------------- ------ -------- + * KEY NUMBER(38) IN + * DATA CLOB IN + * + */ + + $conn = OCILogon($user, $password); + $stmt = OCIParse($conn, "begin save_data(:key, :data); end;"); + $clob = OCINewDescriptor($conn, OCI_D_LOB); + OCIBindByName($stmt, ':key', $key); + OCIBindByName($stmt, ':data', $clob, -1, OCI_B_CLOB); + $clob->WriteTemporary($data); + OCIExecute($stmt, OCI_DEFAULT); + OCICommit($conn); + $clob->close(); + $clob->free(); + OCIFreeStatement($stmt); +?> +]]> </programlisting> </example> </refsect1> @@ -870,25 +888,27 @@ <para> <example> <title>OCIRowCount</title> - <programlisting role="php"> -&lt;?php - print "&lt;HTML>&lt;PRE>"; + <programlisting> +<![CDATA[ +<?php + print "<HTML><PRE>"; $conn = OCILogon("scott","tiger"); $stmt = OCIParse($conn,"create table emp2 as select * from emp"); OCIExecute($stmt); - print OCIRowCount($stmt) . " rows inserted.&lt;BR>"; + print OCIRowCount($stmt) . " rows inserted.<BR>"; OCIFreeStatement($stmt); $stmt = OCIParse($conn,"delete from emp2"); OCIExecute($stmt); - print OCIRowCount($stmt) . " rows deleted.&lt;BR>"; + print OCIRowCount($stmt) . " rows deleted.<BR>"; OCICommit($conn); OCIFreeStatement($stmt); $stmt = OCIParse($conn,"drop table emp2"); OCIExecute($stmt); OCIFreeStatement($stmt); OCILogOff($conn); - print "&lt;/PRE>&lt;/HTML>"; -?> + print "</PRE></HTML>"; +?> +]]> </programlisting> </example> </para> @@ -914,27 +934,29 @@ </para> <example> <title>OCINumCols</title> - <programlisting role="php"> -&lt;?php -print "&lt;HTML>&lt;PRE>\n"; -$conn = OCILogon ("scott", "tiger"); -$stmt = OCIParse ($conn,"select * from emp"); -OCIExecute ($stmt); -while (OCIFetch ($stmt)) { - print "\n"; - $ncols = OCINumCols ($stmt); - for ( $i = 1; $i &lt;= $ncols; $i++ ) { - $column_name = OCIColumnName ($stmt, $i); - $column_value = OCIResult ($stmt, $i); - print $column_name . ': ' . $column_value . "\n"; - } - print "\n"; -} -OCIFreeStatement ($stmt); -OCILogoff ($conn); -print "&lt;/PRE>"; -print "&lt;/HTML>\n"; + <programlisting> +<![CDATA[ +<?php + print "<HTML><PRE>\n"; + $conn = OCILogon("scott", "tiger"); + $stmt = OCIParse($conn,"select * from emp"); + OCIExecute($stmt); + while ( OCIFetch($stmt) ) { + print "\n"; + $ncols = OCINumCols($stmt); + for ( $i = 1; $i <= $ncols; $i++ ) { + $column_name = OCIColumnName($stmt,$i); + $column_value = OCIResult($stmt,$i); + print $column_name . ': ' . $column_value . "\n"; + } + print "\n"; + } + OCIFreeStatement($stmt); + OCILogoff($conn); + print "</PRE>"; + print "</HTML>\n"; ?> +]]> </programlisting> </example> </refsect1> @@ -1018,15 +1040,21 @@ 指定可能なフラグを次に示します。 <simplelist> - <member><literal>OCI_ASSOC</literal> 連想配列を返す。</member> - <member><literal>OCI_NUM</literal> 添字 1 から始まる配列を返す。(デフォルト)</member> - <member><literal>OCI_RETURN_NULLS</literal> 空のカラムを返す。</member> - <member><literal>OCI_RETURN_LOBS</literal> ディスクリプタの代わりに LOB の値を返す。</member> + <member> + <literal>OCI_ASSOC</literal> 連想配列を返す。 + </member> + <member> + <literal>OCI_NUM</literal> 添字 1 から始まる配列を返す。(デフォルト) + </member> + <member> + <literal>OCI_RETURN_NULLS</literal> 空のカラムを返す。 + </member> + <member> + <literal>OCI_RETURN_LOBS</literal> ディスクリプタの代わりに LOB + の値を返す。 + </member> </simplelist> - - </para> - <para> - </para> + </para> </refsect1> </refentry> @@ -1051,44 +1079,45 @@ </para> <example> <title>OCIFetchStatement</title> - <programlisting role="php"> -&lt;?php + <programlisting> +<![CDATA[ +<?php /* OCIFetchStatement example mbritton@verinet.com (990624) */ -$conn = OCILogon ("scott", "tiger"); +$conn = OCILogon("scott","tiger"); -$stmt = OCIParse ($conn, "select * from emp"); +$stmt = OCIParse($conn,"select * from emp"); -OCIExecute ($stmt); +OCIExecute($stmt); -$nrows = OCIFetchStatement ($stmt,$results); -if ($nrows > 0) { - print "&lt;TABLE BORDER=\"1\">\n"; - print "&lt;TR>\n"; +$nrows = OCIFetchStatement($stmt,$results); +if ( $nrows > 0 ) { + print "<TABLE BORDER=\"1\">\n"; + print "<TR>\n"; while ( list( $key, $val ) = each( $results ) ) { - print "&lt;TH>$key&lt;/TH>\n"; + print "<TH>$key</TH>\n"; } - print "&lt;/TR>\n"; + print "</TR>\n"; - for ( $i = 0; $i &lt; $nrows; $i++ ) { - reset ($results); - print "&lt;TR>\n"; - while ( $column = each ($results) ) { + for ( $i = 0; $i < $nrows; $i++ ) { + reset($results); + print "<TR>\n"; + while ( $column = each($results) ) { $data = $column['value']; - print "&lt;TD>$data[$i]&lt;/TD>\n"; + print "<TD>$data[$i]</TD>\n"; } - print "&lt;/TR>\n"; + print "</TR>\n"; } - print "&lt;/TABLE>\n"; + print "</TABLE>\n"; } else { - echo "No data found&lt;BR>\n"; + echo "No data found<BR>\n"; } -print "$nrows Records Selected&lt;BR>\n"; +print "$nrows Records Selected<BR>\n"; -OCIFreeStatement ($stmt); -OCILogoff ($conn); - +OCIFreeStatement($stmt); +OCILogoff($conn); ?> +]]> </programlisting> </example> </refsect1> @@ -1118,6 +1147,67 @@ </refsect1> </refentry> + <refentry id="function.ocicolumnname"> + <refnamediv> + <refname>OCIColumnName</refname> + <refpurpose>カラムの名前を返す</refpurpose> + </refnamediv> + <refsect1> + <title>説明</title> + <funcsynopsis> + <funcprototype> + <funcdef>string <function>OCIColumnName</function></funcdef> + <paramdef>int <parameter>stmt</parameter></paramdef> + <paramdef>int <parameter>col</parameter></paramdef> + </funcprototype> + </funcsynopsis> + <simpara> + <function>OCIColumnName</function> は指定した(1から始まる)カラム + 番号に対応するカラムの名前を返します。 + </simpara> + <para> + <example> + <title>OCIColumnName</title> + <programlisting> +<![CDATA[ +<?php + print "<HTML><PRE>\n"; + $conn = OCILogon("scott", "tiger"); + $stmt = OCIParse($conn,"select * from emp"); + OCIExecute($stmt); + print "<TABLE BORDER=\"1\">"; + print "<TR>"; + print "<TH>Name</TH>"; + print "<TH>Type</TH>"; + print "<TH>Length</TH>"; + print "</TR>"; + $ncols = OCINumCols($stmt); + for ( $i = 1; $i <= $ncols; $i++ ) { + $column_name = OCIColumnName($stmt,$i); + $column_type = OCIColumnType($stmt,$i); + $column_size = OCIColumnSize($stmt,$i); + print "<TR>"; + print "<TD>$column_name</TD>"; + print "<TD>$column_type</TD>"; + print "<TD>$column_size</TD>"; + print "</TR>"; + } + OCIFreeStatement($stmt); + OCILogoff($conn); + print "</PRE>"; + print "</HTML>\n"; +?> +]]> + </programlisting> + </example> + </para> + <simpara> + <function>OCINumCols</function>, <function>OCIColumnType</function>, + <function>OCIColumnSize</function>も参照下さい。 + </simpara> + </refsect1> + </refentry> + <refentry id="function.ocicolumnsize"> <refnamediv> <refname>OCIColumnSize</refname> @@ -1133,42 +1223,44 @@ </funcprototype> </funcsynopsis> <para> - <function>OCIColumnSize</function>はOracleにより指定されたカラムのサイズを - 返します。 - <parameter>col</parameter>パラメータに(1から始まる)カラム番号または - カラム名のどちらかを使用可能です。 + <function>OCIColumnSize</function>はOracleにより指定されたカラム + のサイズを返します。<parameter>col</parameter>パラメータに(1から + 始まる)カラム番号またはカラム名のどちらかを使用可能です。 </para> <para> <example> <title>OCIColumnSize</title> - <programlisting role="php"> -&lt;?php -print "&lt;HTML>&lt;PRE>\n"; -$conn = OCILogon ("scott", "tiger"); -$stmt = OCIParse ($conn, "select * from emp"); -OCIExecute ($stmt); -print "&lt;TABLE BORDER=\"1\">"; -print "&lt;TR>"; -print "&lt;TH>Name&lt;/TH>"; -print "&lt;TH>Type&lt;/TH>"; -print "&lt;TH>Length&lt;/TH>"; -print "&lt;/TR>"; -$ncols = OCINumCols ($stmt); -for ( $i = 1; $i &lt;= $ncols; $i++ ) { - $column_name = OCIColumnName ($stmt, $i); - $column_type = OCIColumnType ($stmt, $i); - $column_size = OCIColumnSize ($stmt, $i); - print "&lt;TR>"; - print "&lt;TD>$column_name&lt;/TD>"; - print "&lt;TD>$column_type&lt;/TD>"; - print "&lt;TD>$column_size&lt;/TD>"; - print "&lt;/TR>"; -} -OCIFreeStatement ($stmt); -OCILogoff ($conn); -print "&lt;/PRE>"; -print "&lt;/HTML>\n"; + <programlisting> +<![CDATA[ +<?php + print "<HTML><PRE>\n"; + $conn = OCILogon("scott", "tiger"); + $stmt = OCIParse($conn,"select * from emp"); + OCIExecute($stmt); + print "<TABLE BORDER=\"1\">"; + print "<TR>"; + print "<TH>Name</TH>"; + print "<TH>Type</TH>"; + print "<TH>Length</TH>"; + print "</TR>"; + $ncols = OCINumCols($stmt); + for ( $i = 1; $i <= $ncols; $i++ ) { + $column_name = OCIColumnName($stmt,$i); + $column_type = OCIColumnType($stmt,$i); + $column_size = OCIColumnSize($stmt,$i); + print "<TR>"; + print "<TD>$column_name</TD>"; + print "<TD>$column_type</TD>"; + print "<TD>$column_size</TD>"; + print "</TR>"; + } + print "</TABLE>"; + OCIFreeStatement($stmt); + OCILogoff($conn); + print "</PRE>"; + print "</HTML>\n"; ?> +]]> </programlisting> </example> </para> @@ -1179,6 +1271,67 @@ </refsect1> </refentry> + <refentry id="function.ocicolumntype"> + <refnamediv> + <refname>OCIColumnType</refname> + <refpurpose>カラムのデータ型を返す</refpurpose> + </refnamediv> + <refsect1> + <title>説明</title> + <funcsynopsis> + <funcprototype> + <funcdef>mixed <function>OCIColumnType</function></funcdef> + <paramdef>int <parameter>stmt</parameter></paramdef> + <paramdef>int <parameter>col</parameter></paramdef> + </funcprototype> + </funcsynopsis> + <simpara> + <function>OCIColumnType</function>は、指定した(1から始まる)カラム + 番号に対応するカラムのデータ型を返します。 + </simpara> + <para> + <example> + <title>OCIColumnType</title> + <programlisting> +<![CDATA[ +<?php + print "<HTML><PRE>\n"; + $conn = OCILogon("scott", "tiger"); + $stmt = OCIParse($conn,"select * from emp"); + OCIExecute($stmt); + print "<TABLE BORDER=\"1\">"; + print "<TR>"; + print "<TH>Name</TH>"; + print "<TH>Type</TH>"; + print "<TH>Length</TH>"; + print "</TR>"; + $ncols = OCINumCols($stmt); + for ( $i = 1; $i <= $ncols; $i++ ) { + $column_name = OCIColumnName($stmt,$i); + $column_type = OCIColumnType($stmt,$i); + $column_size = OCIColumnSize($stmt,$i); + print "<TR>"; + print "<TD>$column_name</TD>"; + print "<TD>$column_type</TD>"; + print "<TD>$column_size</TD>"; + print "</TR>"; + } + OCIFreeStatement($stmt); + OCILogoff($conn); + print "</PRE>"; + print "</HTML>\n"; +?> +]]> + </programlisting> + </example> + </para> + <simpara> + <function>OCINumCols</function>, <function>OCIColumnName</function>, + <function>OCIColumnSize</function> も参照下さい。 + </simpara> + </refsect1> + </refentry> + <refentry id="function.ociserverversion"> <refnamediv> <refname>OCIServerVersion</refname> @@ -1195,12 +1348,14 @@ <para> <example> <title>OCIServerVersion</title> - <programlisting role="php"> -&lt;?php -$conn = OCILogon ("scott", "tiger"); -print "Server Version: " . OCIServerVersion($conn); -OCILogOff ($conn); + <programlisting> +<![CDATA[ +<?php + $conn = OCILogon("scott","tiger"); + print "Server Version: " . OCIServerVersion($conn); + OCILogOff($conn); ?> +]]> </programlisting> </example> </para> @@ -1279,19 +1434,21 @@ <example> <title>コーディング例</title> <programlisting role="php"> -&lt;?php -print "&lt;HTML>&lt;PRE>"; -$conn = OCILogon ("scott", "tiger"); -$sql = "delete from emp where deptno = 10"; +<![CDATA[ +<?php + print "<HTML><PRE>"; + $conn = OCILogon("scott","tiger"); + $sql = "delete from emp where deptno = 10"; -$stmt = OCIParse ($conn,$sql); -if (OCIStatementType ($stmt) == "DELETE" ) { - die "You are not allowed to delete from this table&lt;BR>"; -} + $stmt = OCIParse($conn,$sql); + if ( OCIStatementType($stmt) == "DELETE" ) { + die "You are not allowed to delete from this table<BR>"; + } -OCILogoff ($conn); -print "&lt;/PRE>&lt;/HTML>"; + OCILogoff($conn); + print "</PRE></HTML>"; ?> +]]> </programlisting> </example> </para> @@ -1321,66 +1478,70 @@ <para> <example> <title>ストアドプロシージャからの参照カーソルの使用例</title> - <programlisting role="php"> -&lt;?php + <programlisting> +<![CDATA[ +<?php // ストアドプロシージャ info.output が :data の参照カーソルを返すと仮定する -$conn = OCILogon ("scott", "tiger"); -$curs = OCINewCursor ($conn); -$stmt = OCIParse ($conn, "begin info.output(:data); end;"); +$conn = OCILogon("scott","tiger"); +$curs = OCINewCursor($conn); +$stmt = OCIParse($conn, "begin info.output(:data); end;"); -ocibindbyname ($stmt,"data",&amp;$curs,-1,OCI_B_CURSOR); -ociexecute ($stmt); -ociexecute ($curs); +ocibindbyname($stmt,"data",$curs,-1,OCI_B_CURSOR); +ociexecute($stmt); +ociexecute($curs); -while (OCIFetchInto($curs,&amp;$data)) { +while (OCIFetchInto($curs,$data)) { var_dump($data); } -OCIFreeStatement ($stmt); -OCIFreeCursor ($curs); -OCILogoff ($conn); - ?> +OCIFreeStatement($stmt); +OCIFreeCursor($curs); +OCILogoff($conn); +?> +]]> </programlisting> </example> </para> <para> <example> - <title>select文における参照カーソルの使用例</title> - <programlisting role="php"> -&lt;?php -print "&lt;HTML>&lt;BODY>"; -$conn = OCILogon ("scott","tiger"); + <title>select文におけるREF CURSORの使用例</title> + <programlisting> +<![CDATA[ +<?php +print "<HTML><BODY>"; +$conn = OCILogon("scott","tiger"); $count_cursor = "CURSOR(select count(empno) num_emps from emp " . "where emp.deptno = dept.deptno) as EMPCNT from dept"; -$stmt = OCIParse ($conn,"select deptno,dname,$count_cursor"); - -ociexecute ($stmt); -print "&lt;TABLE BORDER=\"1\">"; -print "&lt;TR>"; -print "&lt;TH>DEPT NAME&lt;/TH>"; -print "&lt;TH>DEPT #&lt;/TH>"; -print "&lt;TH># EMPLOYEES&lt;/TH>"; -print "&lt;/TR>"; +$stmt = OCIParse($conn,"select deptno,dname,$count_cursor"); -while (OCIFetchInto($stmt,&amp;$data,OCI_ASSOC)) { - print "&lt;TR>"; +ociexecute($stmt); +print "<TABLE BORDER=\"1\">"; +print "<TR>"; +print "<TH>DEPT NAME</TH>"; +print "<TH>DEPT #</TH>"; +print "<TH># EMPLOYEES</TH>"; +print "</TR>"; + +while (OCIFetchInto($stmt,&$data,OCI_ASSOC)) { + print "<TR>"; $dname = $data["DNAME"]; $deptno = $data["DEPTNO"]; - print "&lt;TD>$dname&lt;/TD>"; - print "&lt;TD>$deptno&lt;/TD>"; + print "<TD>$dname</TD>"; + print "<TD>$deptno</TD>"; ociexecute($data[ "EMPCNT" ]); - while (OCIFetchInto($data[ "EMPCNT" ],&amp;$subdata,OCI_ASSOC)) { + while (OCIFetchInto($data[ "EMPCNT" ],&$subdata,OCI_ASSOC)) { $num_emps = $subdata["NUM_EMPS"]; - print "&lt;TD>$num_emps&lt;/TD>"; + print "<TD>$num_emps</TD>"; } - print "&lt;/TR>"; + print "</TR>"; } -print "&lt;/TABLE>"; -print "&lt;/BODY>&lt;/HTML>"; +print "</TABLE>"; +print "</BODY></HTML>"; OCIFreeStatement($stmt); OCILogoff($conn); ?> +]]> </programlisting> </example> </para> @@ -1447,124 +1608,6 @@ </refsect1> </refentry> - <refentry id="function.ocicolumnname"> - <refnamediv> - <refname>OCIColumnName</refname> - <refpurpose>カラムの名前を返す</refpurpose> - </refnamediv> - <refsect1> - <title>説明</title> - <funcsynopsis> - <funcprototype> - <funcdef>string <function>OCIColumnName</function></funcdef> - <paramdef>int <parameter>stmt</parameter></paramdef> - <paramdef>int <parameter>col</parameter></paramdef> - </funcprototype> - </funcsynopsis> - <simpara> - <function>OCIColumnName</function> は指定した(1から始まる)カラム - 番号に対応するカラムの名前を返します。 - </simpara> - <para> - <example> - <title>OCIColumnName</title> - <programlisting role="php"> -&lt;?php -print "&lt;HTML>&lt;PRE>\n"; -$conn = OCILogon ("scott", "tiger"); -$stmt = OCIParse ($conn,"select * from emp"); -OCIExecute ($stmt); -print "&lt;TABLE BORDER=\"1\">"; -print "&lt;TR>"; -print "&lt;TH>Name&lt;/TH>"; -print "&lt;TH>Type&lt;/TH>"; -print "&lt;TH>Length&lt;/TH>"; -print "&lt;/TR>"; -$ncols = OCINumCols ($stmt); -for ($i = 1; $i &lt;= $ncols; $i++) { - $column_name = OCIColumnName ($stmt, $i); - $column_type = OCIColumnType ($stmt, $i); - $column_size = OCIColumnSize ($stmt, $i); - print "&lt;TR>"; - print "&lt;TD>$column_name&lt;/TD>"; - print "&lt;TD>$column_type&lt;/TD>"; - print "&lt;TD>$column_size&lt;/TD>"; - print "&lt;/TR>"; -} -OCIFreeStatement ($stmt); -OCILogoff ($conn); -print "&lt;/PRE>"; -print "&lt;/HTML>\n"; -?> - </programlisting> - </example> - </para> - <simpara> - <function>OCINumCols</function>, <function>OCIColumnType</function>, - <function>OCIColumnSize</function>も参照下さい。 - </simpara> - </refsect1> - </refentry> - - <refentry id="function.ocicolumntype"> - <refnamediv> - <refname>OCIColumnType</refname> - <refpurpose>カラムのデータ型を返す</refpurpose> - </refnamediv> - <refsect1> - <title>説明</title> - <funcsynopsis> - <funcprototype> - <funcdef>mixed <function>OCIColumnType</function></funcdef> - <paramdef>int <parameter>stmt</parameter></paramdef> - <paramdef>int <parameter>col</parameter></paramdef> - </funcprototype> - </funcsynopsis> - <simpara> - <function>OCIColumnType</function>は、指定した(1から始まる)カラム - 番号に対応するカラムのデータ型を返します。 - </simpara> - <para> - <example> - <title>OCIColumnType</title> - <programlisting role="php"> -&lt;?php - print "&lt;HTML>&lt;PRE>\n"; - $conn = OCILogon("scott", "tiger"); - $stmt = OCIParse($conn,"select * from emp"); - OCIExecute($stmt); - print "&lt;TABLE BORDER=\"1\">"; - print "&lt;TR>"; - print "&lt;TH>Name&lt;/TH>"; - print "&lt;TH>Type&lt;/TH>"; - print "&lt;TH>Length&lt;/TH>"; - print "&lt;/TR>"; - $ncols = OCINumCols($stmt); - for ( $i = 1; $i &lt;= $ncols; $i++ ) { - $column_name = OCIColumnName($stmt,$i); - $column_type = OCIColumnType($stmt,$i); - $column_size = OCIColumnSize($stmt,$i); - print "&lt;TR>"; - print "&lt;TD>$column_name&lt;/TD>"; - print "&lt;TD>$column_type&lt;/TD>"; - print "&lt;TD>$column_size&lt;/TD>"; - print "&lt;/TR>"; - } - OCIFreeStatement($stmt); - OCILogoff($conn); - print "&lt;/PRE>"; - print "&lt;/HTML>\n"; -?> - </programlisting> - </example> - </para> - <simpara> - <function>OCINumCols</function>, <function>OCIColumnName</function>, - <function>OCIColumnSize</function> も参照下さい。 - </simpara> - </refsect1> - </refentry> - <refentry id="function.ociparse"> <refnamediv> <refname>OCIParse</refname> @@ -1878,6 +1921,26 @@ <funcsynopsis> <funcprototype> <funcdef>string <function>OCICollAssign</function></funcdef> + <paramdef>object <parameter>collection</parameter></paramdef> + <paramdef>object <parameter>object</parameter></paramdef> + </funcprototype> + </funcsynopsis> + <simpara> + Coming soon. + </simpara> + </refsect1> + </refentry> + + <refentry id="function.ocicollappend"> + <refnamediv> + <refname>OCICollAppend</refname> + <refpurpose>Coming soon.</refpurpose> + </refnamediv> + <refsect1> + <title>説明</title> + <funcsynopsis> + <funcprototype> + <funcdef>string <function>OCICollAppend</function></funcdef> <paramdef>object <parameter>collection</parameter></paramdef> <paramdef>object <parameter>object</parameter></paramdef> </funcprototype> Index: phpdoc/ja/functions/openssl.xml diff -u phpdoc/ja/functions/openssl.xml:1.11 phpdoc/ja/functions/openssl.xml:1.12 --- phpdoc/ja/functions/openssl.xml:1.11 Wed Dec 12 15:53:26 2001 +++ phpdoc/ja/functions/openssl.xml Sat Jan 26 10:38:34 2002 @@ -1,4 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> +<!-- $Revision: 1.12 $ --> <reference id="ref.openssl"> <title>OpenSSL 関数</title> <titleabbrev>OpenSSL</titleabbrev> @@ -10,7 +11,7 @@ このモジュールは、署名の生成および認証、そして、データのシール (暗号化)およびオープン(復号化)を行うために、 <ulink url="&url.openssl;">OpenSSL</ulink> の関数を使用します。こ - のモジュールでは、PHP 4.0.4pl1 は、OpenSSL >= 0.9.6 を必要としま + のモジュールでは、PHP 4.0.4pl1 は、OpenSSL &gt;= 0.9.6 を必要としま すが、PHP-4.0.5以降では、OpenSSL &gt;= 0.9.5 でも動作します。 </para> <note> @@ -232,9 +233,10 @@ <funcsynopsis> <funcprototype> <funcdef>mixed <function>openssl_error_string</function></funcdef> - <paramdef>void<parameter></parameter></paramdef> + <void/> </funcprototype> </funcsynopsis> + &warn.experimental.func; <para> エラーメッセージ文字列を返します。返すべきエラーメッセージがもう ない場合は、&false; を返します。 @@ -255,9 +257,11 @@ <example> <title><function>openssl_error_string</function> の例</title> <programlisting role="php"> +<![CDATA[ // ここで処理に失敗するOpenSSL関数をコールしたと仮定します while($msg = openssl_error_string) - echo $msg . "&lt;br&gt;"; + echo $msg . "<br />"; +]]> </programlisting> </example> </para> @@ -282,6 +286,7 @@ <paramdef>resource <parameter>key_identifier</parameter></paramdef> </funcprototype> </funcsynopsis> + &warn.experimental.func; <para> <function>openssl_free_key</function> は、指定した <parameter>key_identifier</parameter> が指すキーをメモリから開放 @@ -308,6 +313,7 @@ </paramdef> </funcprototype> </funcsynopsis> + &warn.experimental.func; <para> 成功時に正のキーリソースID、エラー時に&false;を返します。 </para> @@ -336,6 +342,7 @@ <paramdef>mixed <parameter>certificate</parameter></paramdef> </funcprototype> </funcsynopsis> + &warn.experimental.func; <para> 成功時に正のキーリソースID、エラー時に&false;を返します。 </para> @@ -363,6 +370,7 @@ <paramdef>mixed <parameter>priv_key_id</parameter></paramdef> </funcprototype> </funcsynopsis> + &warn.experimental.func; <para> 成功時に&true;、エラー時に&false;を返します。成功した場合、オープンさ れたデータが <parameter>open_data</parameter> に返されます。 @@ -380,6 +388,7 @@ <example> <title><function>openssl_open</function> の例</title> <programlisting role="php"> +<![CDATA[ // $sealed および $env_key に暗号化されたデータおよびエンベロープキー // が含まれていると仮定。共にシール元(暗号化側)から与えられる。 @@ -397,6 +406,7 @@ // 公開キーをメモリから開放 openssl_free_key($pkeyid); +]]> </programlisting> </example> </para> @@ -422,6 +432,7 @@ <paramdef>array <parameter>pub_key_ids</parameter></paramdef> </funcprototype> </funcsynopsis> + &warn.experimental.func; <para> 成功時にシール(暗号化)されたデータの長さ、エラー時に&false;を返しま す。成功時には、暗号化されたデータが @@ -441,6 +452,7 @@ <example> <title><function>openssl_seal</function> の例</title> <programlisting role="php"> +<![CDATA[ // $data には、暗号化されるデータが含まれていると仮定 // 受信者の公開キーを取得し、使用可能にする @@ -448,6 +460,7 @@ $cert = fread($fp, 8192); fclose($fp); $pk1 = openssl_get_publickey($cert); + // 2番目の受信者についても同様 $fp = fopen("/src/openssl-0.9.6/demos/sign/cert.pem", "r"); $cert = fread($fp, 8192); @@ -462,6 +475,7 @@ // キーをメモリから開放する openssl_free_key($pk1); openssl_free_key($pk2); +]]> </programlisting> </example> </para> @@ -486,6 +500,7 @@ <paramdef>int <parameter>priv_key_id</parameter></paramdef> </funcprototype> </funcsynopsis> + &warn.experimental.func; <para> 成功時に&true;、失敗した場合に&false;を返します。成功した場合、署名が <parameter>signature</parameter> に返されます。 @@ -501,6 +516,7 @@ <example> <title><function>openssl_sign</function> の例</title> <programlisting role="php"> +<![CDATA[ // $data に署名するデータが含まれていると仮定 // ファイルから公開キーを取得し、使用可能とする @@ -514,6 +530,7 @@ // メモリからキーを開放する openssl_free_key($pkeyid); +]]> </programlisting> </example> </para> @@ -538,6 +555,7 @@ <paramdef>mixed <parameter>pub_key_id</parameter></paramdef> </funcprototype> </funcsynopsis> + &warn.experimental.func; <para> 署名(signature)が正しい場合に 1、正しくない場合に 0、エラーの場合 に -1 を返します。 @@ -554,6 +572,7 @@ <example> <title><function>openssl_verify</function> の例</title> <programlisting role="php"> +<![CDATA[ // $data および $signature はデータおよび署名が含まれていると仮定 // 認証局から公開キーを取得し、使用可能にする @@ -573,6 +592,7 @@ // メモリからキーを開放 openssl_free_key($pubkeyid); +]]> </programlisting> </example> </para> @@ -598,6 +618,7 @@ <paramdef>mixed <parameter>recipkey</parameter></paramdef> </funcprototype> </funcsynopsis> + &warn.experimental.func; <para> <parameter>infilename</parameter>で指定したファイル中のS/MIME暗号 化されたメッセージを、<parameter>recipcert</parameter> および @@ -618,6 +639,7 @@ <example> <title><function>openssl_pkcs7_decrypt</function> の例</title> <programlisting role="php"> +<![CDATA[ // $cert および $key にはあなたの個人証明書と公開キーが含まれており、 // あなたはS/MIMEメッセージの受信者であると仮定します。 $infilename = "encrypted.msg"; // 暗号化されたメッセージを含むファイル @@ -627,7 +649,7 @@ echo "復号化されました!"; else echo "復号化に失敗しました!"; - +]]> </programlisting> </example> </para> @@ -658,6 +680,7 @@ </paramdef> </funcprototype> </funcsynopsis> + &warn.experimental.func; <para> <function>openssl_pkcs7_encrypt</function> は、 <parameter>infilename</parameter> という名前のファイルの内容を @@ -674,19 +697,14 @@ ています。 </para> <para> - <emphasis> - この関数のパラメータ/返り値は、PHPのリリース版が公開されるまでに - 変更される可能性があります。 - </emphasis> - </para> - <para> <example> <title><function>openssl_pkcs7_encrypt</function> の例</title> <programlisting role="php"> +<![CDATA[ // 暗号化するメッセージを nighthawk という名前の外部の秘密のエー // ジェントに送信します。送信先の証明書をファイル nighthawk.pem に有し // ています。 -$data = &lt;&lt;&lt;EOD +$data = <<<EOD Nighthawk, Top secret, for your eyes only! @@ -702,13 +720,14 @@ fclose($fp); // メッセージを暗号化 if (openssl_pkcs7_encrypt("msg.txt", "enc.txt", "nighthawk.pem", - array("To" =&gt; "nighthawk@agent.com", // 連想配列の構文 - "From: HQ &lt;hq@cia.com&gt;", // 添字配列の構文 - "Subject" =&gt; "Eyes only"))) + array("To" => "nighthawk@agent.com", // 連想配列の構文 + "From: HQ <hq@cia.com>", // 添字配列の構文 + "Subject" => "Eyes only"))) { // メッセージを暗号化し、送信します! - exec(ini_get("sendmail_path") . " &lt; enc.txt"); + exec(ini_get("sendmail_path") . " < enc.txt"); } +]]> </programlisting> </example> </para> @@ -742,6 +761,7 @@ </paramdef> </funcprototype> </funcsynopsis> + &warn.experimental.func; <para> <function>openssl_pkcs7_sign</function>は、 <parameter>infilename</parameter> という名前のファイルの内容につ @@ -769,18 +789,12 @@ が可能です。 </para> <para> - <emphasis> - この関数のパラメータ/返り値の型は、PHPのリリース版が公開される前 - に変更される可能性があります。 - </emphasis> - </para> - - <para> <example> <title><function>openssl_pkcs7_sign</function> の例</title> <programlisting role="php"> +<![CDATA[ // 受信者が送信者を確認できるようにサインしたいメッセージ -$data = &lt;&lt;&lt;EOD +$data = <<<EOD You have my authorization to spend $10,000 on dinner expenses. @@ -794,13 +808,14 @@ // 暗号化 if (openssl_pkcs7_sign("msg.txt", "signed.txt", "mycert.pem", array("mycert.pem", "mypassphrase"), - array("To" =&gt; "joes@sales.com", // keyed syntax - "From: HQ &lt;ceo@sales.com&gt;", // indexed syntax - "Subject" =&gt; "Eyes only")) + array("To" => "joes@sales.com", // keyed syntax + "From: HQ <ceo@sales.com>", // indexed syntax + "Subject" => "Eyes only")) { // メッセージはサインされました。送信しましょう! - exec(ini_get("sendmail_path") . " &lt; signed.txt"); + exec(ini_get("sendmail_path") . " < signed.txt"); } +]]> </programlisting> </example> </para> @@ -835,6 +850,7 @@ </paramdef> </funcprototype> </funcsynopsis> + &warn.experimental.func; <para> <function>openssl_pkcs7_verify</function> は、 <parameter>filename</parameter> で指定したファイルに記述された @@ -899,6 +915,7 @@ </paramdef> </funcprototype> </funcsynopsis> + &warn.experimental.func; <para> 証明書が意図した目的に使用可能である場合に &true;、使用できない場合 に &false; 、エラーの場合に -1 を返します。 @@ -1007,6 +1024,7 @@ <paramdef>resource <parameter>x509cert</parameter></paramdef> </funcprototype> </funcsynopsis> + &warn.experimental.func; <para> <function>openssl_x509_free</function> は、メモリから指定した <parameter>x509cert</parameter> リソースに関連した証明書を開放し @@ -1037,6 +1055,7 @@ <parameter><optional>shortnames</optional></parameter></paramdef> </funcprototype> </funcsynopsis> + &warn.experimental.func; <para> <function>openssl_x509_parse</function> は、指定した <parameter>x509cert</parameter> に関する情報を返します。この情報 @@ -1076,6 +1095,7 @@ <paramdef>mixed <parameter>x509certdata</parameter></paramdef> </funcprototype> </funcsynopsis> + &warn.experimental.func; <para> <function>openssl_x509_read</function> は、 <parameter>x509certdata</parameter> で指定した証明書をパースし、 @@ -1088,6 +1108,354 @@ </note> </refsect1> </refentry> + + <refentry id="function.openssl-x509-export-to-file"> + <refnamediv> + <refname>openssl_x509_export_to_file</refname> + <refpurpose>CERTをファイルまたは変数にエキスポートする</refpurpose> + </refnamediv> + <refsect1> + <title>説明</title> + <funcsynopsis> + <funcprototype> + <funcdef>bool <function>openssl_x509_export_to_file</function></funcdef> + <paramdef>mixed <parameter>x509</parameter></paramdef> + <paramdef>string <parameter>outfilename</parameter></paramdef> + <paramdef>bool + <parameter><optional>notext</optional></parameter> + </paramdef> + </funcprototype> + </funcsynopsis> + &warn.experimental.func; + <para> + &warn.undocumented.func; + </para> + </refsect1> + </refentry> + + <refentry id="function.openssl-x509-export"> + <refnamediv> + <refname>openssl_x509_export</refname> + <refpurpose>CERTをファイルまたは変数をエキスポートする</refpurpose> + </refnamediv> + <refsect1> + <title>説明</title> + <funcsynopsis> + <funcprototype> + <funcdef>bool <function>openssl_x509_export</function></funcdef> + <paramdef>mixed <parameter>x509</parameter></paramdef> + <paramdef>string <parameter>outfilename</parameter></paramdef> + <paramdef>bool + <parameter><optional>notext</optional></parameter> + </paramdef> + </funcprototype> + </funcsynopsis> + &warn.experimental.func; + <para> + &warn.undocumented.func; + </para> + </refsect1> + </refentry> + + <refentry id="function.openssl-x509-check-private-key"> + <refnamediv> + <refname>openssl_x509_check_private_key</refname> + <refpurpose>秘密キーがあるCERTに対応するかを確認する</refpurpose> + </refnamediv> + <refsect1> + <title>説明</title> + <funcsynopsis> + <funcprototype> + <funcdef>bool <function>openssl_x509_check_private_key</function></funcdef> + <paramdef>mixed <parameter>cert</parameter></paramdef> + <paramdef>mixed <parameter>key</parameter></paramdef> + </funcprototype> + </funcsynopsis> + &warn.experimental.func; + <para> + &warn.undocumented.func; + </para> + </refsect1> + </refentry> + + <refentry id="function.openssl-csr-export-to-file"> + <refnamediv> + <refname>openssl_csr_export_to_file</refname> + <refpurpose>CSRをファイルまたは変数にエキスポートする</refpurpose> + </refnamediv> + <refsect1> + <title>説明</title> + <funcsynopsis> + <funcprototype> + <funcdef>bool <function>openssl_csr_export_to_file</function></funcdef> + <paramdef>resource <parameter>csr</parameter></paramdef> + <paramdef>string <parameter>outfilename</parameter></paramdef> + <paramdef>bool + <parameter><optional>notext</optional></parameter> + </paramdef> + </funcprototype> + </funcsynopsis> + &warn.experimental.func; + <para> + &warn.undocumented.func; + </para> + </refsect1> + </refentry> + + <refentry id="function.openssl-csr-export"> + <refnamediv> + <refname>openssl_csr_export</refname> + <refpurpose>CSRをファイルまたは変数にエキスポートする</refpurpose> + </refnamediv> + <refsect1> + <title>説明</title> + <funcsynopsis> + <funcprototype> + <funcdef>bool <function>openssl_csr_export</function></funcdef> + <paramdef>resource <parameter>csr</parameter></paramdef> + <paramdef>string <parameter>out</parameter></paramdef> + <paramdef>bool + <parameter><optional>notext</optional></parameter> + </paramdef> + </funcprototype> + </funcsynopsis> + &warn.experimental.func; + <para> + &warn.undocumented.func; + </para> + </refsect1> + </refentry> + + <refentry id="function.openssl-csr-sign"> + <refnamediv> + <refname>openssl_csr_sign</refname> + <refpurpose>他のCERTで証明書をサインする</refpurpose> + </refnamediv> + <refsect1> + <title>説明</title> + <funcsynopsis> + <funcprototype> + <funcdef>resource <function>openssl_csr_sign</function></funcdef> + <paramdef>mixed <parameter>csr</parameter></paramdef> + <paramdef>mixed <parameter>x509</parameter></paramdef> + <paramdef>mixed <parameter>priv_key</parameter></paramdef> + <paramdef>long <parameter>days</parameter></paramdef> + </funcprototype> + </funcsynopsis> + &warn.experimental.func; + <para> + &warn.undocumented.func; + </para> + </refsect1> + </refentry> + + <refentry id="function.openssl-csr-new"> + <refnamediv> + <refname>openssl_csr_new</refname> + <refpurpose>秘密キーとCSRを生成する</refpurpose> + </refnamediv> + <refsect1> + <title>説明</title> + <funcsynopsis> + <funcprototype> + <funcdef>bool <function>openssl_csr_new</function></funcdef> + <paramdef>array <parameter>dn</parameter></paramdef> + <paramdef>resource <parameter>privkey</parameter></paramdef> + <paramdef>array + <parameter><optional>extraattribs</optional></parameter> + </paramdef> + <paramdef>array + <parameter><optional>configargs</optional></parameter> + </paramdef> + </funcprototype> + </funcsynopsis> + &warn.experimental.func; + <para> + &warn.undocumented.func; + </para> + </refsect1> + </refentry> + + <refentry id="function.openssl-pkey-new"> + <refnamediv> + <refname>openssl_pkey_new</refname> + <refpurpose>新規に秘密キーを生成する</refpurpose> + </refnamediv> + <refsect1> + <title>説明</title> + <funcsynopsis> + <funcprototype> + <funcdef>resource <function>openssl_pkey_new</function></funcdef> + <paramdef>array + <parameter><optional>configargs</optional></parameter> + </paramdef> + </funcprototype> + </funcsynopsis> + &warn.experimental.func; + <para> + &warn.undocumented.func; + </para> + </refsect1> + </refentry> + + <refentry id="function.openssl-pkey-export-to-file"> + <refnamediv> + <refname>openssl_pkey_export_to_file</refname> + <refpurpose> + キーのエキスポート可能な表現をファイルに取得する + </refpurpose> + </refnamediv> + <refsect1> + <title>説明</title> + <funcsynopsis> + <funcprototype> + <funcdef>bool <function>openssl_pkey_export_to_file</function></funcdef> + <paramdef>mixed <parameter>key</parameter></paramdef> + <paramdef>string <parameter>outfilename</parameter></paramdef> + <paramdef>string + <parameter><optional>passphrase</optional></parameter> + </paramdef> + <paramdef>array + <parameter><optional>config_args</optional></parameter> + </paramdef> + </funcprototype> + </funcsynopsis> + &warn.experimental.func; + <para> + &warn.undocumented.func; + </para> + </refsect1> + </refentry> + + <refentry id="function.openssl-pkey-export"> + <refnamediv> + <refname>openssl_pkey_export</refname> + <refpurpose> + あるキーのエクスポート可能な表現を文字列またはファイルに取得する + </refpurpose> + </refnamediv> + <refsect1> + <title>説明</title> + <funcsynopsis> + <funcprototype> + <funcdef>bool <function>openssl_pkey_export</function></funcdef> + <paramdef>mixed <parameter>key</parameter></paramdef> + <paramdef>mixed <parameter>out</parameter></paramdef> + <paramdef>string + <parameter><optional>passphrase</optional></parameter> + </paramdef> + <paramdef>array + <parameter><optional>config_args</optional></parameter> + </paramdef> + </funcprototype> + </funcsynopsis> + &warn.experimental.func; + <para> + &warn.undocumented.func; + </para> + </refsect1> + </refentry> + + <refentry id="function.openssl-private-encrypt"> + <refnamediv> + <refname>openssl_private_encrypt</refname> + <refpurpose>秘密キーでデータを暗号化する</refpurpose> + </refnamediv> + <refsect1> + <title>説明</title> + <funcsynopsis> + <funcprototype> + <funcdef>bool <function>openssl_private_encrypt</function></funcdef> + <paramdef>string <parameter>data</parameter></paramdef> + <paramdef>string <parameter>crypted</parameter></paramdef> + <paramdef>mixed <parameter>key</parameter></paramdef> + <paramdef>int + <parameter><optional>padding</optional></parameter> + </paramdef> + </funcprototype> + </funcsynopsis> + &warn.experimental.func; + <para> + &warn.undocumented.func; + </para> + </refsect1> + </refentry> + + <refentry id="function.openssl-private-decrypt"> + <refnamediv> + <refname>openssl_private_decrypt</refname> + <refpurpose>秘密キーでデータを復号化する</refpurpose> + </refnamediv> + <refsect1> + <title>説明</title> + <funcsynopsis> + <funcprototype> + <funcdef>bool <function>openssl_private_decrypt</function></funcdef> + <paramdef>string <parameter>data</parameter></paramdef> + <paramdef>string <parameter>crypted</parameter></paramdef> + <paramdef>mixed <parameter>key</parameter></paramdef> + <paramdef>int + <parameter><optional>padding</optional></parameter> + </paramdef> + </funcprototype> + </funcsynopsis> + &warn.experimental.func; + <para> + &warn.undocumented.func; + </para> + </refsect1> + </refentry> + + <refentry id="function.openssl-public-encrypt"> + <refnamediv> + <refname>openssl_public_encrypt</refname> + <refpurpose>公開キーでデータを暗号化する</refpurpose> + </refnamediv> + <refsect1> + <title>説明</title> + <funcsynopsis> + <funcprototype> + <funcdef>bool <function>openssl_public_encrypt</function></funcdef> + <paramdef>string <parameter>data</parameter></paramdef> + <paramdef>string <parameter>crypted</parameter></paramdef> + <paramdef>mixed <parameter>key</parameter></paramdef> + <paramdef>int + <parameter><optional>padding</optional></parameter> + </paramdef> + </funcprototype> + </funcsynopsis> + &warn.experimental.func; + <para> + &warn.undocumented.func; + </para> + </refsect1> + </refentry> + + <refentry id="function.openssl-public-decrypt"> + <refnamediv> + <refname>openssl_public_decrypt</refname> + <refpurpose>公開キーでデータを復号化する</refpurpose> + </refnamediv> + <refsect1> + <title>説明</title> + <funcsynopsis> + <funcprototype> + <funcdef>bool <function>openssl_public_decrypt</function></funcdef> + <paramdef>string <parameter>data</parameter></paramdef> + <paramdef>string <parameter>crypted</parameter></paramdef> + <paramdef>resource <parameter>key</parameter></paramdef> + <paramdef>int + <parameter><optional>padding</optional></parameter> + </paramdef> + </funcprototype> + </funcsynopsis> + &warn.experimental.func; + <para> + &warn.undocumented.func; + </para> + </refsect1> + </refentry> + </reference> <!-- Keep this comment at the end of the file Index: phpdoc/ja/functions/oracle.xml diff -u phpdoc/ja/functions/oracle.xml:1.9 phpdoc/ja/functions/oracle.xml:1.10 --- phpdoc/ja/functions/oracle.xml:1.9 Wed Dec 12 15:53:27 2001 +++ phpdoc/ja/functions/oracle.xml Sat Jan 26 10:38:34 2002 @@ -1,4 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> +<!-- $Revision: 1.10 $ --> <reference id="ref.oracle"> <title>Oracle 関数</title> <titleabbrev>Oracle</titleabbrev> @@ -46,15 +47,17 @@ 出力値が代入されます。 <informalexample> <programlisting role="php"> -&lt;?php +<![CDATA[ +<?php ora_parse($curs, "declare tmp INTEGER; begin tmp := :in; :out := tmp; :x := 7.77; end;"); ora_bind($curs, "result", ":x", $len, 2); ora_bind($curs, "input", ":in", 5, 1); ora_bind($curs, "output", ":out", 5, 2); $input = 765; ora_exec($curs); -echo "Result: $result&lt;BR>Out: $output&lt;BR>In: $input"; +echo "Result: $result<BR>Out: $output<BR>In: $input"; ?> +]]> </programlisting> </informalexample> </para> @@ -302,7 +305,8 @@ UNIX版のOracle上では、以下のようにエラーメッセージに関する詳細を得ること ができます。 <computeroutput> - <prompt>$</prompt> <userinput>oerr ora <replaceable>00001</replaceable></userinput> 00001, 00000, +<prompt>$</prompt> <userinput>oerr ora +<replaceable>00001</replaceable></userinput> 00001, 00000, "unique constraint (%s.%s) violated" // *Cause: An update or insert statement attempted to insert a duplicate key // For Trusted ORACLE configured in DBMS MAC mode, you may see // this message @@ -415,12 +419,14 @@ <example> <title>Oracleレコードを配列に取得する</title> <programlisting role="php"> -&lt;?php +<![CDATA[ +<?php array($results); -ora_fetch_into($cursor, &amp;$results); +ora_fetch_into($cursor, &$results); echo $results[0]; echo $results[1]; ?> +]]> </programlisting> </example> 配列をリファレンスで取得する必要があることに注意して下さい。 @@ -511,7 +517,9 @@ <productname>SQL*Net</productname> を用いて作成されます。 <informalexample> <programlisting role="php"> +<![CDATA[ $conn = Ora_Logon("user<emphasis>@TNSNAME</emphasis>", "pass"); +]]> </programlisting> </informalexample> </para> @@ -643,7 +651,7 @@ 関連付けます。 </para> <para> - 成功時に0、エラーの場合は-1を返します。 + &return.success; </para> <simpara> <function>ora_exec</function>, <function>ora_fetch</function>, Index: phpdoc/ja/functions/outcontrol.xml diff -u phpdoc/ja/functions/outcontrol.xml:1.11 phpdoc/ja/functions/outcontrol.xml:1.12 --- phpdoc/ja/functions/outcontrol.xml:1.11 Wed Dec 12 15:53:28 2001 +++ phpdoc/ja/functions/outcontrol.xml Sat Jan 26 10:38:34 2002 @@ -1,4 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> +<!-- $Revision: 1.12 $ --> <reference id="ref.outcontrol"> <title>出力制御関数</title> <titleabbrev>出力制御</titleabbrev> @@ -17,7 +18,8 @@ <example> <title><function>出力関数</function> の例</title> <programlisting role="php"> -&lt;?php +<![CDATA[ +<?php ob_start(); echo "Hello\n"; @@ -26,7 +28,8 @@ ob_end_flush(); -?&gt; +?> +]]> </programlisting> </example> </para> @@ -78,6 +81,12 @@ ファリングされ、最も外側のテーブルの &lt;/table&gt; タグが現れる までテーブルは描画されません。 </para> + <para> + いくつかのバージョンのMicrosoft Internet Explorerは、256バイトの + 出力を受けてからページを表示し始めます。このため、これらのブラウ + ザにページを表示させるには、フラッシュする前に余分な空白を送信す + る必要があるかもしれません。 + </para> </note> </refsect1> </refentry> @@ -142,7 +151,8 @@ <example> <title>ユーザ定義のコールバック関数の例</title> <programlisting role="php"> -&lt;?php +<![CDATA[ +<?php function callback($buffer) { @@ -153,30 +163,33 @@ ob_start("callback"); -?&gt; +?> -&lt;html&gt; -&lt;body&gt; -&lt;p&gt;It's like comparing apples to oranges. -&lt;/body&gt; -&lt;/html&gt; +<html> +<body> +<p>It's like comparing apples to oranges. +</body> +</html> -&lt;?php +<?php ob_end_flush(); -?&gt; +?> +]]> </programlisting> </example> <para> 出力は次のようになります。 <informalexample> <programlisting role="php"> -&lt;html&gt; -&lt;body&gt; -&lt;p&gt;It's like comparing oranges to oranges. -&lt;/body&gt; -&lt;/html&gt; +<![CDATA[ +<html> +<body> +<p>It's like comparing oranges to oranges. +</body> +</html> +]]> </programlisting> </informalexample> </para> @@ -242,6 +255,31 @@ </refsect1> </refentry> + <refentry id="function.ob-get-level"> + <refnamediv> + <refname>ob_get_level</refname> + <refpurpose> + 出力バッファリング機構のネストレベルを返す + </refpurpose> + </refnamediv> + <refsect1> + <title>説明</title> + <funcsynopsis> + <funcprototype> + <funcdef>int <function>ob_get_level</function></funcdef> + <void/> + </funcprototype> + </funcsynopsis> + <para> + この関数は、出力バッファリング機構のネストレベルを返します。 + </para> + <para> + <function>ob_start</function>および + <function>ob_get_contents</function>も参照下さい。 + </para> + </refsect1> + </refentry> + <refentry id="function.ob-gzhandler"> <refnamediv> <refname>ob_gzhandler</refname> @@ -255,8 +293,16 @@ <funcprototype> <funcdef>string <function>ob_gzhandler</function></funcdef> <paramdef>string <parameter>buffer</parameter></paramdef> + <paramdef>int + <parameter><optional>mode</optional></parameter> + </paramdef> </funcprototype> </funcsynopsis> + <note> + <para> + <parameter>mode</parameter>は、PHP 4.0.5で追加されました。 + </para> + </note> <para> <function>ob_gzhandler</function> は、Webページの圧縮をサポートす るgzエンコードされたデータをWebブラウザに送信することを容易にする @@ -272,22 +318,89 @@ <example> <title><function>ob_gzhandler</function> の例</title> <programlisting role="php"> -&lt;?php +<![CDATA[ +<?php ob_start("ob_gzhandler"); ?> -&lt;html&gt; -&lt;body&gt; -&lt;p&gt;This should be a compressed page. -&lt;/html&gt; -&lt;/body&gt; +<html> +<body> +<p>This should be a compressed page. +</html> +<body> +]]> </programlisting> </example> </para> <para> <function>ob_start</function> および <function>ob_end_flush</function>も参照下さい。 + </para> + </refsect1> + </refentry> + + <refentry id="function.ob-flush"> + <refnamediv> + <refname>ob_flush</refname> + <refpurpose> + 出力バッファをフラッシュ(送信)する + </refpurpose> + </refnamediv> + <refsect1> + <title>説明</title> + <funcsynopsis> + <funcprototype> + <funcdef>void <function>ob_flush</function></funcdef> + <void/> + </funcprototype> + </funcsynopsis> + <para> + この関数は、(ある場合に)出力バッファの内容を送信します。更にバッ + ファの内容を処理したい場合には、<function>ob_flush</function>がコー + ルされた後にバッファの内容が破棄されるので、 + <function>ob_flush</function>の前に + <function>ob_get_contents</function>をコールする必要があります。 + </para> + <para> + この関数は、<function>ob_end_flush</function>のように出力バッファ + を破棄しません。 + </para> + <para> + <function>ob_get_contents</function>, + <function>ob_clean</function>, + <function>ob_end_flush</function>, + <function>ob_end_clean</function>も参照下さい。 + </para> + </refsect1> + </refentry> + + <refentry id="function.ob-clean"> + <refnamediv> + <refname>ob_clean</refname> + <refpurpose> + 出力バッファをクリア(消去)する + </refpurpose> + </refnamediv> + <refsect1> + <title>説明</title> + <funcsynopsis> + <funcprototype> + <funcdef>void <function>ob_clean</function></funcdef> + <void/> + </funcprototype> + </funcsynopsis> + <para> + この関数は、出力バッファの内容を破棄します。 + </para> + <para> + この関数は、<function>ob_end_clean</function>のように出力バッファ + を破棄しません。 + </para> + <para> + <function>ob_flush</function>, + <function>ob_end_flush</function>, + <function>ob_end_clean</function>も参照下さい。 </para> </refsect1> </refentry> Index: phpdoc/ja/functions/pcntl.xml diff -u phpdoc/ja/functions/pcntl.xml:1.3 phpdoc/ja/functions/pcntl.xml:1.4 --- phpdoc/ja/functions/pcntl.xml:1.3 Wed Dec 12 15:53:29 2001 +++ phpdoc/ja/functions/pcntl.xml Sat Jan 26 10:38:34 2002 @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="iso-8859-1"?> -<!-- $Revision: 1.3 $ --> +<!-- $Revision: 1.4 $ --> <reference id="ref.pcntl"> <title>プロセス制御関数</title> <titleabbrev>PCNTL</titleabbrev> @@ -113,7 +113,8 @@ <example> <title>プロセス制御の例</title> <programlisting role="php"> -&lt;?php +<![CDATA[ +<?php $pid = pcntl_fork(); if ($pid == -1) { @@ -159,6 +160,7 @@ ?> +]]> </programlisting> </example> </sect1> @@ -192,7 +194,8 @@ <example> <title><function>pcntl_fork</function> の例</title> <programlisting role="php"> -&lt;?php +<![CDATA[ +<?php $pid = pcntl_fork(); if ($pid == -1) { @@ -203,7 +206,8 @@ // 子プロセスの場合 } -?&gt; +?> +]]> </programlisting> </example> <para> @@ -242,7 +246,8 @@ <example> <title><function>pcntl_signal</function> Example</title> <programlisting role="php"> -&lt;?php +<![CDATA[ +<?php // signal handler function function sig_handler($signo) { @@ -279,12 +284,13 @@ print "Done\n" -?&gt; +?> +]]> </programlisting> </example> <para> - See also <function>pcntl_fork</function> and - <function>pcntl_waitpid</function>. + <function>pcntl_fork</function>および + <function>pcntl_waitpid</function>も参照下さい。 </para> </refsect1> </refentry> @@ -306,54 +312,52 @@ </funcprototype> </funcsynopsis> <para> - The <function>pcntl_waitpid</function> function suspends execution - of the current process until a child as specified by the - <parameter>pid</parameter> argument has exited, or until a signal - is delivered whose action is to terminate the current process or - to call a signal handling function. If a child as requested by - <parameter>pid</parameter> has already exited by the time of the - call (a so-called "zombie" process), the function returns - immediately. Any system resources used by the child are - freed. Please see your system's waitpid(2) man page for specific - details as to how waitpid works on your system. - </para> - <para> - <function>pcntl_waitpid</function> returns the process ID of the - child which exited, -1 on error or zero if WNOHANG was used and no - child was available + <function>pcntl_waitpid</function>関数は、 + 引数<parameter>pid</parameter>で指定した子プロセスが終了するか、 + カレントのプロセスを終了するかシグナル処理関数をコールするシグナ + ルが送信されるまでカレントのプロセスの実行を中断します。 + <parameter>pid</parameter>でリクエストされた子プロセスが、 コール + 時に既に終了している場合("ゾンビ"プロセスと呼ばれます)、この関数 + は直ちに処理を返します。子プロセスにより使用される全てのシステム + リソースは、解放されます。waitpidがシステムでの動作に関する詳細に + ついては、システムのwaitpid(2)マニュアルページを参照下さい。 + </para> + <para> + <function>pcntl_waitpid</function>は、終了した子プロセスのプロセ + スIDを返します。エラーの場合は-1、WNOHANGが使用され、子プロセスが + 利用できない場合に0を返します。 </para> <para> - The value of <parameter>pid</parameter> can be one of the following: + <parameter>pid</parameter>の値は次のどれかとなります。 <table> - <title>possible values for <parameter>pid</parameter></title> + <title><parameter>pid</parameter>の値</title> <tgroup cols="2"> <tbody> <row> <entry><literal>&lt; -1</literal></entry> <entry> - wait for any child process whose process group ID is equal to - the absolute value of <parameter>pid</parameter>. + <parameter>pid</parameter>の絶対値に等しいプロセスグループID + が等しい子プロセスを待ちます。 </entry> </row> <row> <entry><literal>-1</literal></entry> <entry> - wait for any child process; this is the same behaviour that - the wait function exhibits. + 全ての子プロセスを待つ。これは、wait関数の動作と同じです。 </entry> </row> <row> <entry><literal>0</literal></entry> <entry> - wait for any child process whose process group ID is equal to - that of the calling process. + プロセスグループIDがコール側のプロセスと等しい子プロセスを待 + ちます。 </entry> </row> <row> <entry><literal>&gt; 0</literal></entry> <entry> - wait for the child whose process ID is equal to the value of - <parameter>pid</parameter>. + プロセスIDが<parameter>pid</parameter>の値に等しい子プロセス + を待ちます。 </entry> </row> </tbody> @@ -361,9 +365,9 @@ </table> </para> <para> - <function>pcntl_waitpid</function> will store status information - in the <parameter>status</parameter> parameter which can be - evaluated using the following functions: + <function>pcntl_waitpid</function>は、パラメータ + <parameter>status</parameter>の中にステータス情報を保存します。こ + のステータスは、次の関数を用いて評価可能です。 <function>pcntl_wifexited</function>, <function>pcntl_wifstopped</function>, <function>pcntl_wifsignaled</function>, @@ -372,24 +376,23 @@ <function>pcntl_wstopsig</function>. </para> <para> - The value of <parameter>options</parameter> is the value of zero - or more of the following two global constants - <literal>OR</literal>'ed together: + <parameter>options</parameter>の値は、次の2つのグローバル定数のゼ + ロまたはそれ以上の論理和です。 <table> - <title>possible values for <parameter>options</parameter></title> + <title><parameter>options</parameter>の値</title> <tgroup cols="2"> <tbody> <row> <entry><literal>WNOHANG</literal></entry> <entry> - return immediately if no child has exited. + 子プロセスが終了していない場合に直ちに処理を返します。 </entry> </row> <row> <entry><literal>WUNTRACED</literal></entry> <entry> - return for children which are stopped, and whose status has - not been reported. + 停止した子プロセスの場合に処理を返します。そして、ステータス + はリポートされません。 </entry> </row> </tbody> @@ -397,14 +400,14 @@ </table> </para> <para> - See also <function>pcntl_fork</function>, + <function>pcntl_fork</function>, <function>pcntl_signal</function>, <function>pcntl_wifexited</function>, <function>pcntl_wifstopped</function>, <function>pcntl_wifsignaled</function>, <function>pcntl_wexitstatus</function>, - <function>pcntl_wtermsig</function> and - <function>pcntl_wstopsig</function>. + <function>pcntl_wtermsig</function>, + <function>pcntl_wstopsig</function>も参照下さい。 </para> </refsect1> </refentry> @@ -425,18 +428,18 @@ </funcprototype> </funcsynopsis> <para> - Returns the return code of a terminated child. This function is - only useful if <function>pcntl_wifexited</function> returned - &true;. + 終了した子プロセスのリターンコードを返します。この関数は、 + <function>pcntl_wifexited</function>が&true;を返す場合のみ有用で + す。 </para> <para> - The parameter <parameter>status</parameter> is the status - parameter supplied to a successfull call to - <function>pcntl_waitpid</function>. + パラメータ<parameter>status</parameter>は、 + <function>pcntl_waitpid</function>のコール時に指定されるステータ + スパラメータです。 </para> <para> - See also <function>pcntl_waitpid</function> and - <function>pcntl_wifexited</function>. + <function>pcntl_waitpid</function>および + <function>pcntl_wifexited</function>も参照下さい。 </para> </refsect1> </refentry> @@ -457,17 +460,17 @@ </funcprototype> </funcsynopsis> <para> - Returns &true; if the child status code represents a successful - exit. + 子プロセスのステータスコードが終了に成功した場合に&true;を返しま + す。 </para> - <para> - The parameter <parameter>status</parameter> is the status - parameter supplied to a successfull call to - <function>pcntl_waitpid</function>. + <para> + パラメータ<parameter>status</parameter>は、 + <function>pcntl_waitpid</function>のコール時に指定されるステータ + スパラメータです。 </para> <para> - See also <function>pcntl_waitpid</function> and - <function>pcntl_wexitstatus</function>. + <function>pcntl_waitpid</function>および + <function>pcntl_wexitstatus</function>も参照下さい。 </para> </refsect1> </refentry> @@ -488,17 +491,17 @@ </funcprototype> </funcsynopsis> <para> - Returns &true; if the child process exited because of a signal - which was not caught. + 捕捉されなかったシグナルのせいで子プロセスが終了した場合に&true; + を返します。 </para> <para> - The parameter <parameter>status</parameter> is the status - parameter supplied to a successfull call to - <function>pcntl_waitpid</function>. + パラメータ<parameter>status</parameter>は、 + <function>pcntl_waitpid</function>のコール時に指定されるステータ + スパラメータです。 </para> <para> - See also <function>pcntl_waitpid</function> and - <function>pcntl_signal</function>. + <function>pcntl_waitpid</function>および + <function>pcntl_signal</function>も参照下さい。 </para> </refsect1> </refentry> @@ -519,23 +522,22 @@ </funcprototype> </funcsynopsis> <para> - Returns &true; if the child process which caused the return is - currently stopped; this is only possible if the call to - <function>pcntl_waitpid</function> was done using the option - <literal>WUNTRACED</literal>. + リターンを生じた子プロセスが現在停止している場合に&true;を返しま + す。この関数は、<function>pcntl_waitpid</function>のコールがオプ + ション<literal>WUNTRACED</literal>を用いている場合のみ使用可能で + す。 </para> <para> - The parameter <parameter>status</parameter> is the status - parameter supplied to a successfull call to - <function>pcntl_waitpid</function>. + パラメータ<parameter>status</parameter>は、 + <function>pcntl_waitpid</function>のコール時に指定されるステータ + スパラメータです。 </para> <para> - See also <function>pcntl_waitpid</function>. + <function>pcntl_waitpid</function>も参照下さい。 </para> </refsect1> </refentry> - <refentry id="function.pcntl-wstopsig"> <refnamediv> <refname>pcntl_wstopsig</refname> @@ -552,18 +554,18 @@ </funcprototype> </funcsynopsis> <para> - Returns the number of the signal which caused the child to stop. - This function is only useful if - <function>pcntl_wifstopped</function> returned &true;. + 子プロセスを停止させたシグナル番号を返します。この関数は、 + <function>pcntl_wifstopped</function>が&true;を返す場合のみ有用で + す。 </para> <para> - The parameter <parameter>status</parameter> is the status - parameter supplied to a successfull call to - <function>pcntl_waitpid</function>. + パラメータ<parameter>status</parameter>は、 + <function>pcntl_waitpid</function>のコール時に指定されるステータ + スパラメータです。 </para> <para> - See also <function>pcntl_waitpid</function> and - <function>pcntl_wifstopped</function>. + <function>pcntl_waitpid</function>、 + <function>pcntl_wifstopped</function>も参照下さい。 </para> </refsect1> </refentry> @@ -584,23 +586,46 @@ </funcprototype> </funcsynopsis> <para> - Returns the number of the signal that caused the child process to - terminate. This function is only useful if - <function>pcntl_wifsignaled</function> returned &true;. + 子プロセスを終了させたシグナルの数を返します。この関数は、 + <function>pcntl_wifsignaled</function>が&true;を返す場合のみ有用 + です。 </para> <para> - The parameter <parameter>status</parameter> is the status - parameter supplied to a successfull call to - <function>pcntl_waitpid</function>. + パラメータ<parameter>status</parameter>は、 + <function>pcntl_waitpid</function>のコール時に指定されるステータ + スパラメータです。 </para> <para> - See also <function>pcntl_waitpid</function>, - <function>pcntl_signal</function> and - <function>pcntl_wifsignaled</function>. + <function>pcntl_waitpid</function>, + <function>pcntl_signal</function>, + <function>pcntl_wifsignaled</function>も参照下さい。 </para> </refsect1> </refentry> + <refentry id='function.pcntl-exec'> + <refnamediv> + <refname>pcntl_exec</refname> + <refpurpose> + カレントのプロセス空間で指定したプログラムを実行する + </refpurpose> + </refnamediv> + <refsect1> + <title>説明</title> + <funcsynopsis> + <funcprototype> + <funcdef>bool <function>pcntl_exec</function></funcdef> + <paramdef>string <parameter>path</parameter></paramdef> + <paramdef>array <parameter><optional>args</optional></parameter></paramdef> + <paramdef>array <parameter><optional>envs</optional></parameter></paramdef> + </funcprototype> + </funcsynopsis> + <para> + &warn.undocumented.func; + </para> + </refsect1> + </refentry> + </reference> <!-- Keep this comment at the end of the file Index: phpdoc/ja/functions/pcre.xml diff -u phpdoc/ja/functions/pcre.xml:1.30 phpdoc/ja/functions/pcre.xml:1.31 --- phpdoc/ja/functions/pcre.xml:1.30 Sun Jan 20 12:54:12 2002 +++ phpdoc/ja/functions/pcre.xml Sat Jan 26 10:38:34 2002 @@ -1,9 +1,16 @@ <?xml version="1.0" encoding="utf-8"?> +<!-- $Revision: 1.31 $ --> <reference id="ref.pcre"> <title>Perl互換の正規表現関数</title> <titleabbrev>PCRE</titleabbrev> <partintro> + <note> + <para> + PHPは、<link linkend="ref.regex">POSIX拡張正規表現関数</link>を用 + いてPOSIX拡張構文を用いる正規表現もサポートしています。 + </para> + </note> <para> この関数で使用されるパターンに関する構文は、Perl に非常によく似て います。式は、デリミタ、例えばスラッシュ (/) で囲まれる必要があり @@ -56,6 +63,12 @@ <simpara> Perl互換の正規表現関数は、PHP 4およびPHP 3.0.9以降で利用可能です。 </simpara> + <simpara> + 正規表現は、Philip Hazelで書かれ、the University of Cambridge, + Englandに著作権があるオープンソースソフトウエアのPCREライブラリパッ + ケージでサポートされます。<ulink + url="&url.pcre;">&url.pcre;</ulink>で利用可能です。 + </simpara> </note> </partintro> @@ -97,17 +110,20 @@ <example> <title>文字列"php"を探す</title> <programlisting role="php"> +<![CDATA[ // パラメータのデリミタの後の"i"は大文字小文字を区別しない検索を示します if (preg_match ("/php/i", "PHP is the web scripting language of choice.")) { print "A match was found."; } else { print "A match was not found."; } +]]> </programlisting> </example> <example> <title>単語"web"を探す</title> <programlisting role="php"> +<![CDATA[ // パターン内の\bは単語の境界を示します。このため、独立した単語の // "web"にのみマッチし、"webbing" または "cobweb"のような単語の一 // 部にはマッチしません @@ -121,11 +137,13 @@ } else { print "マッチするものはみつかりませんでした。"; } +]]> </programlisting> </example> <example> <title>URLからドメイン名を得る</title> <programlisting role="php"> +<![CDATA[ // URLからホスト名を得る preg_match("/^(http:\/\/)?([^\/]+)/i", "http://www.php.net/index.html", $matches); @@ -133,11 +151,14 @@ // ホスト名の最後の二つを得る preg_match("/[^\.\/]+\.[^\.\/]+$/",$host,$matches); echo "ドメイン名: ".$matches[0]."\n"; +]]> </programlisting> </example> この例の出力は以下となります。 <programlisting> +<![CDATA[ domain name is: php.net +]]> </programlisting> <function>preg_match_all</function>, <function>preg_replace</function>, @@ -188,18 +209,22 @@ 文字列の配列であり、といった順番となります。 <informalexample> <programlisting role="php"> -preg_match_all ("|&lt;[^>]+>(.*)&lt;/[^>]+>|U", - "&lt;b>example: &lt;/b>&lt;div align=left>this a test&lt;/div>", +<![CDATA[ +preg_match_all ("|<[^>]+>(.*)</[^>]+>|U", + "<b>example: </b><div align=left>this a test</div>", $out, PREG_PATTERN_ORDER); print $out[0][0].", ".$out[0][1]."\n"; -print $out[1][0].", ".$out[1][1]."\n" +print $out[1][0].", ".$out[1][1]."\n"; +]]> </programlisting> </informalexample> この例の出力は以下のようになります。 <informalexample> <programlisting> -&lt;b>example: &lt;/b>, &lt;div align=left>this is a test&lt;/div> +<![CDATA[ +<b>example: </b>, <div align=left>this is a test</div> example: , this is a test +]]> </programlisting> </informalexample> $out[0]は、パターン全体にマッチする文字列の配列を有しており、 @@ -216,18 +241,22 @@ といった順序となります。 <informalexample> <programlisting role="php"> -preg_match_all ("|&lt;[^>]+>(.*)&lt;/[^>]+>|U", - "&lt;b>example: &lt;/b>&lt;div align=left>this a test&lt;/div>", +<![CDATA[ +preg_match_all ("|<[^>]+>(.*)</[^>]+>|U", + "<b>example: </b><div align=left>this a test</div>", $out, PREG_SET_ORDER); print $out[0][0].", ".$out[0][1]."\n"; -print $out[1][0].", ".$out[1][1]."\n" +print $out[1][0].", ".$out[1][1]."\n"; +]]> </programlisting> </informalexample> この例の出力は以下のようになります。 <informalexample> <programlisting role="php"> -&lt;b>example: &lt;/b>, example: -&lt;div align=left>this is a test&lt;/div>, this is a test +<![CDATA[ +<b>example: </b>, example: +<div align=left>this is a test</div>, this is a test +]]> </programlisting> </informalexample> この場合、$matches[0] は最初にマッチした組であり、 @@ -253,8 +282,10 @@ <example> <title>テキストから全ての電話番号を得る</title> <programlisting role="php"> +<![CDATA[ preg_match_all ("/\(? (\d{3})? \)? (?(1) [\-\s] ) \d{3}-\d{4}/x", "Call 555-1212 or 1-800-555-1212", $phones); +]]> </programlisting> </example> </para> @@ -262,32 +293,36 @@ <example> <title>HTMLタグにマッチするものを見付ける(greedy)</title> <programlisting role="php"> +<![CDATA[ // \\2 は後方参照の例です。これは、pcre に正規表現自体の括弧の2番目の // 組、つまりこの場合は([\w]+)、にマッチします。文字列が二重引用符で括 // られているため、バックスラッシュの追加が必要です。 -$html = "&lt;b&gt;bold text&lt;/b&gt;&lt;a href=howdy.html&gt;click me&lt;/a&gt;"; +$html = "<b>bold text</b><a href=howdy.html>click me</a>"; -preg_match_all ("/(&lt;([\w]+)[^&gt;]*&gt;)(.*)(&lt;\/\\2&gt;)/", $html, $matches); +preg_match_all ("/(<([\w]+)[^>]*>)(.*)(<\/\\2>)/", $html, $matches); -for ($i=0; $i&lt; count($matches[0]); $i++) { - echo "matched: ".$matches[0][$i]."\n"; - echo "part 1: ".$matches[1][$i]."\n"; - echo "part 2: ".$matches[3][$i]."\n"; - echo "part 3: ".$matches[4][$i]."\n\n"; +for ($i=0; $i< count($matches[0]); $i++) { + echo "matched: ".$matches[0][$i]."\n"; + echo "part 1: ".$matches[1][$i]."\n"; + echo "part 2: ".$matches[3][$i]."\n"; + echo "part 3: ".$matches[4][$i]."\n\n"; } +]]> </programlisting> </example> この例の出力は以下となります。 <programlisting> -matched: &lt;b&gt;bold text&lt;/b&gt; -part 1: &lt;b&gt; +<![CDATA[ +matched: <b>bold text</b> +part 1: <b> part 2: bold text -part 3: &lt;/b&gt; +part 3: </b> -matched: &lt;a href=howdy.html&gt;click me&lt;/a&gt; -part 1: &lt;a href=howdy.html&gt; +matched: <a href=howdy.html>click me</a> +part 1: <a href=howdy.html> part 2: click me -part 3: &lt;/a&gt; +part 3: </a> +]]> </programlisting> </para> <simpara> @@ -381,22 +416,28 @@ <example> <title>複数の値を置換する</title> <programlisting role="php"> +<![CDATA[ $patterns = array ("/(19|20)(\d{2})-(\d{1,2})-(\d{1,2})/", "/^\s*{(\w+)}\s*=/"); $replace = array ("\\3/\\4/\\1\\2", "$\\1 ="); print preg_replace ($patterns, $replace, "{startDate} = 1999-5-27"); +]]> </programlisting> </example> この例の出力は次のようになります。 <programlisting> - $startDate = 5/27/1999 +<![CDATA[ +$startDate = 5/27/1999 +]]> </programlisting> <example> <title>/e 修飾子の使用法</title> <programlisting role="php"> -preg_replace ("/(&lt;\/?)(\w+)([^>]*>)/e", +<![CDATA[ +preg_replace ("/(<\/?)(\w+)([^>]*>)/e", "'\\1'.strtoupper('\\2').'\\3'", $html_body); +]]> </programlisting> <para> 入力テキストの全てのHTMLタグを大文字に変換します。 @@ -405,33 +446,34 @@ <example> <title>HTMLをテキストに変換する</title> <programlisting role="php"> +<![CDATA[ // $document には、HTMLドキュメントが含まれている必要があります。 // このドキュメントのHTMLタグおよびjavascriptの部分と空白文字を // 削除します。また、いくつかのHTMLエンティティを等価なテキストに // 変換します。 -$search = array ("'&lt;script[^&gt;]*?&gt;.*?&lt;/script&gt;'si", +$search = array ("'<script[^>]*?>.*?</script>'si", // javascriptを削除 - "'&lt;[\/\!]*?[^&lt;&gt;]*?&gt;'si", // htmlタグを削除 + "'<[\/\!]*?[^<>]*?>'si", // htmlタグを削除 "'([\r\n])[\s]+'", // 空白文字を削除 - "'&amp;(quot|#34);'i", // htmlエンティティを置換 - "'&amp;(amp|#38);'i", - "'&amp;(lt|#60);'i", - "'&amp;(gt|#62);'i", - "'&amp;(nbsp|#160);'i", - "'&amp;(iexcl|#161);'i", - "'&amp;(cent|#162);'i", - "'&amp;(pound|#163);'i", - "'&amp;(copy|#169);'i", - "'&amp;#(\d+);'e"); // phpとして評価 + "'&(quot|#34);'i", // htmlエンティティを置換 + "'&(amp|#38);'i", + "'&(lt|#60);'i", + "'&(gt|#62);'i", + "'&(nbsp|#160);'i", + "'&(iexcl|#161);'i", + "'&(cent|#162);'i", + "'&(pound|#163);'i", + "'&(copy|#169);'i", + "'&#(\d+);'e"); // phpとして評価 $replace = array ("", "", "\\1", "\"", - "&amp;", - "&lt;", - "&gt;", + "&", + "<", + ">", " ", chr(161), chr(162), @@ -440,6 +482,7 @@ "chr(\\1)"); $text = preg_replace ($search, $replace, $document); +]]> </programlisting> </example> </para> @@ -562,21 +605,28 @@ 検索文字列の部分を取得します。 </para> <programlisting role="php"> +<![CDATA[ // " ", \r, \t, \n , \f を含むカンマまたは空白文字で句を分割します。 $keywords = preg_split ("/[\s,]+/", "hypertext language, programming"); +]]> </programlisting> <para> 文字列を文字要素に分割します。 </para> <programlisting role="php"> +<![CDATA[ $str = 'string'; $chars = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY); print_r($chars); +]]> </programlisting> </example> <para> + <function>spliti</function>, + <function>split</function>, + <function>implode</function>, <function>preg_match</function>, - <function>preg_match_all</function>, + <function>preg_match_all</function>, <function>preg_replace</function>も参照下さい。 </para> </refsect1> @@ -622,23 +672,26 @@ <example> <title><function>preg_quote</function>の例</title> <programlisting role="php"> +<![CDATA[ $keywords="$40 for a g3/400"; $keywords = preg_quote ($keywords, "/"); echo $keywords; // \$40 for a g3\/400 を返します。 +]]> </programlisting> </example> <example> <title>テキストの中の単語を置換する</title> <programlisting role="php"> - +<![CDATA[ // この例では、preg_quote($word) が正規表現の特殊文字であるアスタリス // クを保持するために使用されています。 $textbody = "This book is *very* hard to find."; $word = "*very*"; $textbody = preg_replace ("/".preg_quote($word)."/", - "&lt;i&gt;".$word."&lt;/i&gt;", + "<i>".$word."</i>", $textbody); +]]> </programlisting> </example> </para> @@ -673,13 +726,14 @@ により返された配列に<function>array_values</function>を適用して下 さい。 </para> - <para> <example> <title><function>preg_grep</function>の例</title> <programlisting role="php"> +<![CDATA[ // 浮動小数点数を含む全ての配列要素を返す $fl_array = preg_grep ("/^(\d+)?\.\d+$/", $array); +]]> </programlisting> </example> </para> @@ -688,7 +742,7 @@ <refentry id="pcre.pattern.modifiers"> <refnamediv> - <refname>Pattern Modifiers</refname> + <refname>パターン修正子</refname> <refpurpose>正規表現パターンで使用可能な修飾子を得る</refpurpose> </refnamediv> <refsect1> @@ -848,7 +902,7 @@ <simpara> この修正子は、Perl非互換なPCREの機能を有効にします。パターン 文字列は、UTF-8エンコードされた文字列として処理されます。こ - の修正子は、PHP-4.0.7以降で使用可能です。 + の修正子は、PHP-4.1.0以降で使用可能です。 </simpara> </listitem> </varlistentry> @@ -875,291 +929,693 @@ <refsect1> <title>Perl との差</title> - <literallayout> - ここで説明するのは、Perl 5.005 に関連するものです。 - - 1. デフォルトでは空白文字は C ライブラリ関数 isspace() が - 認識する全ての文字ですが、別の文字型テーブルを用いてPCREを - コンパイルすることも可能です。 - 通常、isspace() は空白、フォームフィード、改行、複改、 - 水平タブ、垂直タブにマッチします。 - Perl 5 ではもう空白文字の中に垂直タブを含んでいません。 - かなり前から Perl ドキュメントにあった \v エスケープは、 - 実際は認識されていませんでした。 - しかし、その文字自体は少なくとも 5.002 までは空白文字として - 処理されていま?_。 - 5.004 および 5.005 では、この文字は \s にマッチしません。 - - 2. PCRE では、先読み言明(assertion)時に繰り返し数の指定を使用できません。 - Perl はこれを許可しますが、意図した通りに動作することを - 意味するわけではありません。 - 例えば、(?!a){3} は、次の3文字が "a" でないことを - 言明するわけではありません。 - この指定は、次の文字が "a" ではないことを3回言明するだけです。 - - 3. 否定の先読み言明の中で生じるサブパターンを取得する回数は計算され - ますが、オフセットベクトルの中の対応するエントリは設定されません。 - Perl では、言明のマッチングに失敗する前にマッチした - パターンからその変数を設定しますが、それが行われるのは、 - 否定の先読み言明の枝が1つだけの場合のみです。 - - 4. ヌル文字文字は、検索対象文字列でサポートされますが、 - パターン文字列ではサポートされません。 - これは、パターン文字列は、0 を終端とする通常の C 文字列として - 渡されるためです。 - エスケープシーケンス "\0" は、ヌル文字を表すパターンとして - 使用することが可能です。 - - 5. 次の Perl エスケープシーケンスは、サポートされません。: - \l, \u, \L, \U, \E, \Q - 実際、Perl では、これらはパターンマッチングエンジンの部分ではなく、 - 通常の文字列処理の部分に実証されています。 - - 6. Perl の \G 言明は、一回のパターンマッチに関するものではないため、 - サポートされません。 - - 7. 明確に述べると、PCRE は (?{code}) 構造をサポートしません。 - - 8. - Perl 5.005_02 では、書きこみ時に - パターンの一部を繰り返す際に取?した文字列の設定に関連する - 奇妙な動作が見うけられます。 - 例えば、"aba" をパターン /^(a(b)?)+$/ にマッチングする場合、 - $2 には、値 "b" が設定されますが、"aabbaa" を /^(aa(bb)?)+$/ - にマッチさせた場合、$2 は設定されません。 - しかし、パターンを/^(aa(b(b))?)+$/に変えると、$2 (および $3) - が設定されます。 - - Perl 5.004 では、$2 はどちら?±ースでも設定されます。 - これは、PCRE でも匦ǘです。尦?的に Perl が別の矛盾のない - 状態に変更された場合、PCRE も追従する可能性があります。 - - 9. 他の未解決の矛盾は、Perl 5.005_02 では、パターン - /^(a)?(?(1)a|b)+$/ は文字列 "a" にマッチしますが、 - PCRE ではマッチしないということです。 - しかし、Perl と PCRE は共に /^(a)?a/ で "a" をマッチした - 場合に $1 が未定義のままとなります。 - - 10. PCRE は、Perl 正規表現の機能にいくつかの拡張機能を提供します。 - - (a) 先読み言明は、固定長の文字列にマッチする必要がありますが、 - 先読み言明の別の各枝は、異なった長さの文字列にマッチすることが - できます。Perl 5.005 では全て同じ長さである必要があります。 - - (b) PCRE_DOLLAR_ENDONLY が設定されており、PCRE_MULTILINE が - 設定されていない場合、メタ文字 $ は、文字列の終端にのみマッチします。 - - (c) PCRE_EXTRA が設定されている場合、バックスラッシュの後に - 文字があって特に意味がないものは、エラーとなります。 - - (d) PCRE_UNGREEDY が設定されていゥ4合、デフォルトでは - 貪欲でない繰り返し指定子の貪欲さは反転しますが、 - 疑問符が後ろにつく場合は、貪欲になります。 - </literallayout> + <para> + ここで説明するのは、Perl 5.005 に関連するものです。 + <orderedlist> + <listitem> + <simpara> + デフォルトでは空白文字は C ライブラリ関数 isspace() が認識する + 全ての文字ですが、別の文字型テーブルを用いてPCREをコンパイルす + ることも可能です。通常、isspace() は空白、フォームフィード、改 + 行、複改、水平タブ、垂直タブにマッチします。Perl 5 ではもう空白 + 文字の中に垂直タブを含んでいません。かなり前から Perl ドキュメ + ントにあった \v エスケープは、実際は認識されていませんでした。 + しかし、その文字自体は少なくとも 5.002 までは空白文字として処理 + されています。5.004 および 5.005 では、この文字は \s にマッチし + ません。 + </simpara> + </listitem> + <listitem> + <simpara> + PCREでは、先読み言明(assertion)時に繰り返し数の指定を使用できま + せん。Perlはこれを許可しますが、意図した通りに動作することを意 + 味するわけではありません。例えば、(?!a){3} は、次の3文字が "a" + でないことを言明するわけではありません。この指定は、次の文字が + "a" ではないことを3回言明するだけです。 + </simpara> + </listitem> + <listitem> + <simpara> + 否定の先読み言明の中で生じるサブパターンを取得する回数は計算さ + れますが、オフセットベクトルの中の対応するエントリは設定されま + せん。Perlでは、言明のマッチングに失敗する前にマッチしたパター + ンからその変数を設定しますが、それが行われるのは、否定の先読み + 言明の枝が1つだけの場合のみです。 + </simpara> + </listitem> + <listitem> + <simpara> + ヌル文字文字は、検索対象文字列でサポートされますが、パターン文 + 字列ではサポートされません。これは、パターン文字列は、0を終端と + する通常のC文字列として渡されるためです。エスケープシーケンス + "\0"は、ヌル文字を表すパターンとして使用することが可能です。 + </simpara> + </listitem> + <listitem> + <simpara> + 次のPerlエスケープシーケンスは、サポートされません。: \l, \u, + \L, \U, \E, \Q 実際、Perlでは、これらはパターンマッチングエン + ジンの部分ではなく、通常の文字列処理の部分に実証されています。 + </simpara> + </listitem> + <listitem> + <simpara> + Perlの\G言明は、一回のパターンマッチに関するものではないため、 + サポートされません。 + </simpara> + </listitem> + <listitem> + <simpara> + 明確に述べると、PCREは(?{code})構造をサポートしません。 + </simpara> + </listitem> + <listitem> + <simpara> + Perl 5.005_02では、書きこみ時にパターンの一部を繰り返す際に取得 + した文字列の設定に関連する奇妙な動作が見うけられます。例えば、 + "aba"をパターン/^(a(b)?)+$/にマッチングする場合、$2には、値"b" + が設定されますが、"aabbaa"を/^(aa(bb)?)+$/にマッチさせた場合、 + $2は設定されません。しかし、パターンを/^(aa(b(b))?)+$/に変える + と、$2 (および $3)が設定されます。Perl 5.004では、$2 はどちらの + ケースでも設定されま、PCREでも&true;に設定されます。将来的に + Perlが別の矛盾のない状態に変更された場合、PCREも追従する可能性 + があります。 + </simpara> + </listitem> + <listitem> + <simpara> + 他の未解決の矛盾は、Perl 5.005_02 では、パターン + /^(a)?(?(1)a|b)+$/ は文字列 "a" にマッチしますが、PCRE ではマッ + チしないということです。しかし、Perl と PCRE は共に /^(a)?a/ で + "a" をマッチした場合に $1 が未定義のままとなります。 + </simpara> + </listitem> + <listitem> + <para> + PCREは、Perl正規表現の機能にいくつかの拡張機能を提供します。 + <orderedlist> + <listitem> + <simpara> + 先読み言明は、固定長の文字列にマッチする必要がありますが、先 + 読み言明の別の各枝は、異なった長さの文字列にマッチすることが + できます。Perl 5.005 では全て同じ長さである必要があります。 + </simpara> + </listitem> + <listitem> + <simpara> + <link + linkend="pcre.pattern.modifiers">PCRE_DOLLAR_ENDONLY</link>が + 設定されており、<link + linkend="pcre.pattern.modifiers">PCRE_MULTILINE</link>が設定 + されていない場合、メタ文字$は、文字列の終端にのみマッチします。 + </simpara> + </listitem> + <listitem> + <simpara> + <link linkend="pcre.pattern.modifiers">PCRE_EXTRA</link>が設 + 定されている場合、バックスラッシュの後に文字があって特に意味 + がないものは、エラーとなります。 + </simpara> + </listitem> + <listitem> + <simpara> + <link linkend="pcre.pattern.modifiers">PCRE_UNGREEDY</link>が + 設定されている場合、デフォルトでは貪欲でない繰り返し指定子の + 貪欲さは反転しますが、疑問符が後ろにつく場合は、貪欲になります。 + </simpara> + </listitem> + </orderedlist> + </para> + </listitem> + </orderedlist> + </para> </refsect1> <refsect1 id="regexp.reference"> <title>正規表現の詳細</title> <refsect2 id="regexp.introduction"> <title>導入</title> - <literallayout> - PCRE によりサポートされる正規表現の構文を以下に示します。 - 正規表現は、Perl のドキュメントや他の多くの書籍において - 豊富な例と共に説明されています。 - Jeffrey Friedl が書いた O'Reilly 発刊の - "Mastering Regular Expressions" には、詳細が示されています。 - ここでの説明はリファレンスドキュメントとして使用することを - 意図しています。 + <para> + PCREによりサポートされる正規表現の構文を以下に示します。 + 正規表現は、Perlのドキュメントや他の多くの書籍において + 豊富な例と共に説明されています。 + Jeffrey Friedl が書いた O'Reilly 発刊の + "Mastering Regular Expressions" には、詳細が示されています。 + ここでの説明はリファレンスドキュメントとして使用することを + 意図しています。 - 正規表現はパターンであり、検索対象文字列に対して左から右にマッチングが - 行われます。 - パターンの中の多くの文字はそれ自体を表し、検索対象の対応する文字に - マッチします。簡単な例をあげると、次のパターン - - The quick brown fox - - は、検索対象文字列のそれ自体と同じ部分にマッチします。 - </literallayout> + 正規表現はパターンであり、検索対象文字列に対して左から右にマッチングが + 行われます。 + パターンの中の多くの文字はそれ自体を表し、検索対象の対応する文字に + マッチします。簡単な例をあげると、パターン + <literal>The quick brown fox</literal> + は、検索対象文字列のそれ自体と同じ部分にマッチします。 + </para> </refsect2> <refsect2 id="regexp.reference.meta"> <title>メタ文字</title> - <literallayout> - 正規表現の強力さは、パターン中に複数の選択肢や繰り返し - を含む能力によるものです。 - これらは、<emphasis>メタ</emphasis>-<emphasis>文字</emphasis> を - 使用したパターンによりエンコードされます。 - メタ文字はそれ自体を表しませんが、代わりに特有の解釈が行われます。 - - 2種類のメタ文字が存在します。片方は、ブラケットの中以外にあるパターン - で使用可能なもので、もう片方は、ブラケットの中で使用可能なものです。 - ブラケットの外で使用されるメタ文字には次のようなものがあります。 - - \ 一般的なエスケープ文字 - ^ 検索対象(複数行モードでは行)の始まりを言明 - $ 検索対象(複数行モードでは行)の終わりを言明 - . (デフォルトでは)改行を除く全ての文字にマッチ - [ 文字クラス開始を定義 - | 選択枝の開始 - ( サブパターンの開始 - ) サブパターンの終了 - ? ( の意味を拡張する - または、0 または1 回の繰り返し - または、繰り返しを最小化する - * 0 以上の繰り返し - + 1 以上の繰り返し - { 最小/最大繰り返しの開始 + <para> + 正規表現の強力さは、パターン中に複数の選択肢や繰り返しを含む能力 + によるものです。これらは、<emphasis>メタ</emphasis>-<emphasis>文 + 字</emphasis>を使用したパターンによりエンコードされます。 + メタ文字はそれ自体を表しませんが、代わりに特有の解釈が行われます。 + </para> + <para> + 2種類のメタ文字が存在します。片方は、ブラケットの中以外にあるパターン + で使用可能なもので、もう片方は、ブラケットの中で使用可能なものです。 + ブラケットの外で使用されるメタ文字には次のようなものがあります。 + <variablelist> + <varlistentry> + <term><emphasis>\</emphasis></term> + <listitem> + <simpara> + 一般的なエスケープ文字 + </simpara> + </listitem> + </varlistentry> + <varlistentry> + <term><emphasis>^</emphasis></term> + <listitem> + <simpara> + 検索対象(複数行モードでは行)の始まりを言明 + </simpara> + </listitem> + </varlistentry> + <varlistentry> + <term><emphasis>$</emphasis></term> + <listitem> + <simpara> + 検索対象(複数行モードでは行)の終わりを言明 + </simpara> + </listitem> + </varlistentry> + <varlistentry> + <term><emphasis>.</emphasis></term> + <listitem> + <simpara> + (デフォルトでは)改行を除く全ての文字にマッチ + </simpara> + </listitem> + </varlistentry> + <varlistentry> + <term><emphasis>[</emphasis></term> + <listitem> + <simpara> + 文字クラス開始を定義 + </simpara> + </listitem> + </varlistentry> + <varlistentry> + <term><emphasis>]</emphasis></term> + <listitem> + <simpara> + 文字クラスの終了 + </simpara> + </listitem> + </varlistentry> + <varlistentry> + <term><emphasis>|</emphasis></term> + <listitem> + <simpara> + 選択枝の開始 + </simpara> + </listitem> + </varlistentry> + <varlistentry> + <term><emphasis>(</emphasis></term> + <listitem> + <simpara> + サブパターンの開始 + </simpara> + </listitem> + </varlistentry> + <varlistentry> + <term><emphasis>)</emphasis></term> + <listitem> + <simpara> + サブパターンの終了 + </simpara> + </listitem> + </varlistentry> + <varlistentry> + <term><emphasis>?</emphasis></term> + <listitem> + <simpara> + ( の意味を拡張するまたは、0 または1 回の繰り返しまたは、繰り + 返しを最小化する + </simpara> + </listitem> + </varlistentry> + <varlistentry> + <term><emphasis>*</emphasis></term> + <listitem> + <simpara> + 0以上の繰り返し + </simpara> + </listitem> + </varlistentry> + <varlistentry> + <term><emphasis>+</emphasis></term> + <listitem> + <simpara> + 1以上の繰り返し + </simpara> + </listitem> + </varlistentry> + <varlistentry> + <term><emphasis>{</emphasis></term> + <listitem> + <simpara> + 最小/最大繰り返しの開始 + </simpara> + </listitem> + </varlistentry> + <varlistentry> + <term><emphasis>}</emphasis></term> + <listitem> + <simpara> + 最小/最大繰り返しの終了 + </simpara> + </listitem> + </varlistentry> + </variablelist> パターン中でブラケットの中の部分は、"文字クラス" と呼ばれます。 文字クラスで使えるメタ文字は次のものだけです。 - \ 一般的なエスケープ文字 - ^ 最初の文字に用いた場合のみ、クラスを否定 - - 文字の範囲を示す - ] 文字クラスの終了 - - 次のセクションで、各メタ文字の使用法の説明を行います。 - - </literallayout> + <variablelist> + <varlistentry> + <term><emphasis>\</emphasis></term> + <listitem> + <simpara> + 一般的なエスケープ文字 + </simpara> + </listitem> + </varlistentry> + <varlistentry> + <term><emphasis>^</emphasis></term> + <listitem> + <simpara> + 最初の文字に用いた場合のみ、クラスを否定 + </simpara> + </listitem> + </varlistentry> + <varlistentry> + <term><emphasis>-</emphasis></term> + <listitem> + <simpara> + 文字の範囲を示す + </simpara> + </listitem> + </varlistentry> + <varlistentry> + <term><emphasis>]</emphasis></term> + <listitem> + <simpara> + 文字クラスを終了する + </simpara> + </listitem> + </varlistentry> + </variablelist> + 次のセクションで、各メタ文字の使用法の説明を行います。 + </para> </refsect2> <refsect2 id="regexp.reference.backslash"> <title>バックスラッシュ</title> - <literallayout> - バックスラッシュには、いくつかの使用法があります。まず、 - 英字でない文字が後に続く場合、そて?字が有する - 特別な意味は失われます。このバックスラッシュの使い方は、 - 文字クラスの内側と外側の両方で使用可能です。 - - 例えば、"*" 文字にマッチさせたい場合、パターンに "\*" を書きます。 - これにより、次の文字がメタ文字として解釈されようとされまいと、"\" を伴った英字でない文字が、その文字自体を表すことを保証します。特に、バックスラッシュにマッチさせたい場合は、"\\" と書きます。 - + <para> + バックスラッシュには、いくつかの使用法があります。まず、 + 英字でない文字が後に続く場合、そて?字が有する + 特別な意味は失われます。このバックスラッシュの使い方は、 + 文字クラスの内側と外側の両方で使用可能です。 + </para> + <para> + 例えば、"*" 文字にマッチさせたい場合、パターンに "\*" を書きます。 + これにより、次の文字がメタ文字として解釈されようとされまいと、 + "\" を伴った英字でない文字が、その文字自体を表すことを保証します。 + 特に、バックスラッシュにマッチさせたい場合は、"\\" と書きます。 + </para> + <para> パターンが、 PCRE_EXTENDED オプションを付けてコンパイルされている - 場合、(文字クラスの中でない)パターン内の空白文字および - "#" と次の改行文字の間の文字は無視されます。 - 空白文字または "#" をパターンの一部として含める際には、 - バックスラッシュによりエスケープすることができます。 - - バックスラッシュの2番目の使用法は、出力されない文字を - パターン内に目に見える形でエンコードする手法を提供するものです。 - パターンを終了させるヌル文字を除き、出力されない文字の見え方に - は何の制約もありませんが、パターンをテキスト編集する際には、通常 - 次のエスケープシーケンスを用いる方が、元のバイナリ文字よりも - より簡単でしょう。 - - \a アラーム、ベル文字 (16進 07) - \cx "control-x", ただし x はあらゆる文字 - \e エスケープ (16進 1B) - \f 改ページ (16進 0C) - \n 改行 (16進 0A) - \r 復帰 (16進 0D) - \t タブ (16進 09) - \xhh 16進数で hh の文字 - \ddd 8進数で ddd の文字または後方参照 - - "\cx" の正確な効果は、次のようになります。"x" が小文字の場合、 - 大文字に変換されます。続いて、文字の6ビット目(16進数 40)が - 反転されます。つまり、"\cz" は16進数の 1A になりますが、"\c{" - は16進数の 3B になり、"\c;" は 16進数の 7B になります。 - - "\x" の後では、2桁の16進数が読まれます。(表す文字は、大文字でも - 小文字でも可です) - - "\0" では2桁までの8進数が読みこまれます。 - 両方のケースとも、2桁より少ない場合、表している文字自体が - 使用されます。つまり、"\0\x\07" は2つのヌル文字の後にベル文字 - が続いたものを表します。8進数を表す文字については、最初のゼロ - の後に2桁の数字を指定するように注意して下さい。 - - バックスラッシュの後に0以外の数字が続く場合の処理は、複雑です。 - 文字クラスの外では、PCRE は続く桁を10進数として読みこみます。 - 数字が10よりも小さい場合、または、式の中に値を取得した左括弧が - この数以上あった場合、全体のシーケンスは、<emphasis>後方</emphasis> - <emphasis>参照</emphasis>として解釈されます。この動作に関する説明 - は、括弧付きのサブパターンの説明の後に行います。 - - 文字クラスの中または10進数が9より大きく、取得を行ったサブパターン - がこの数に満たない場合、PCRE はバックスラッシュの後から最大3文字の8進数 - を再度読みこみ、その値の最下位 8ビットから1バイトを生成します。 - 続く桁はそれ自体を表します。例えば、 - - \040 は空白の別の表記法です - \40 は、同じ意味です。ただし、値を取得済みのサブパターンが - 40個未満の場合 - \7 は常に後方参照です - \11 は後方参照またはタブの別の表記法です - \011 は常にタブです - \0113 はタブの後に文字 "3" が続いたものです - \113 (99 を超える後方参照はないので) 8進数 113 を表す文字 - \377 は1ビットの並びで構成される1バイトです - \81 は後方参照または、ヌル文字の後に2つの文字 "8" および "1" が - 続いたものです。 - + 場合、(文字クラスの中でない)パターン内の空白文字および + "#" と次の改行文字の間の文字は無視されます。 + 空白文字または "#" をパターンの一部として含める際には、 + バックスラッシュによりエスケープすることができます。 + </para> + <para> + バックスラッシュの2番目の使用法は、出力されない文字を + パターン内に目に見える形でエンコードする手法を提供するものです。 + パターンを終了させるヌル文字を除き、出力されない文字の見え方に + は何の制約もありませんが、パターンをテキスト編集する際には、通常 + 次のエスケープシーケンスを用いる方が、元のバイナリ文字よりも + より簡単でしょう。 + </para> + <para> + <variablelist> + <varlistentry> + <term><emphasis>\a</emphasis></term> + <listitem> + <simpara> + アラーム、ベル文字 (16進 07) + </simpara> + </listitem> + </varlistentry> + <varlistentry> + <term><emphasis>\cx</emphasis></term> + <listitem> + <simpara> + "control-x", ただし x はあらゆる文字 + </simpara> + </listitem> + </varlistentry> + <varlistentry> + <term><emphasis>\e</emphasis></term> + <listitem> + <simpara> + エスケープ (16進 1B) + </simpara> + </listitem> + </varlistentry> + <varlistentry> + <term><emphasis>\f</emphasis></term> + <listitem> + <simpara> + 改ページ (16進 0C) + </simpara> + </listitem> + </varlistentry> + <varlistentry> + <term><emphasis>\n</emphasis></term> + <listitem> + <simpara> + 改行 (16進 0A) + </simpara> + </listitem> + </varlistentry> + <varlistentry> + <term><emphasis>\r</emphasis></term> + <listitem> + <simpara> + 復帰 (16進 0D) + </simpara> + </listitem> + </varlistentry> + <varlistentry> + <term><emphasis>\t</emphasis></term> + <listitem> + <simpara> + タブ (16進 09) + </simpara> + </listitem> + </varlistentry> + <varlistentry> + <term><emphasis>\xhh</emphasis></term> + <listitem> + <simpara> + 16進数で hh の文字 + </simpara> + </listitem> + </varlistentry> + <varlistentry> + <term><emphasis>\ddd</emphasis></term> + <listitem> + <simpara> + 8進数で ddd の文字または後方参照 + </simpara> + </listitem> + </varlistentry> + </variablelist> + </para> + <para> + "\cx" の正確な効果は、次のようになります。"x" が小文字の場合、 + 大文字に変換されます。続いて、文字の6ビット目(16進数 40)が + 反転されます。つまり、"\cz" は16進数の 1A になりますが、"\c{" + は16進数の 3B になり、"\c;" は 16進数の 7B になります。 + </para> + <para> + "\x" の後では、2桁の16進数が読まれます。(表す文字は、大文字でも + 小文字でも可です)"\0"では2桁までの8進数が読みこまれます。 + 両方のケースとも、2桁より少ない場合、表している文字自体が + 使用されます。つまり、"\0\x\07" は2つのヌル文字の後にベル文字 + が続いたものを表します。8進数を表す文字については、最初のゼロ + の後に2桁の数字を指定するように注意して下さい。 + </para> + <para> + バックスラッシュの後に0以外の数字が続く場合の処理は、複雑です。 + 文字クラスの外では、PCRE は続く桁を10進数として読みこみます。 + 数字が10よりも小さい場合、または、式の中に値を取得した左括弧が + この数以上あった場合、全体のシーケンスは、<emphasis>後方</emphasis> + <emphasis>参照</emphasis>として解釈されます。この動作に関する説明 + は、括弧付きのサブパターンの説明の後に行います。 + </para> + <para> + 文字クラスの中または10進数が9より大きく、取得を行ったサブパターン + がこの数に満たない場合、PCRE はバックスラッシュの後から最大3文字の8進数 + を再度読みこみ、その値の最下位 8ビットから1バイトを生成します。 + 続く桁はそれ自体を表します。例えば、 + </para> + <para> + <variablelist> + <varlistentry> + <term><emphasis>\040</emphasis></term> + <listitem> + <simpara> + は空白の別の表記法です。 + </simpara> + </listitem> + </varlistentry> + <varlistentry> + <term><emphasis>\40</emphasis></term> + <listitem> + <simpara> + は、同じ意味です。ただし、値を取得済みのサブパターンが40個未 + 満の場合。 + </simpara> + </listitem> + </varlistentry> + <varlistentry> + <term><emphasis>\7</emphasis></term> + <listitem> + <simpara> + は常に後方参照です。 + </simpara> + </listitem> + </varlistentry> + <varlistentry> + <term><emphasis>\11</emphasis></term> + <listitem> + <simpara> + は後方参照またはタブの別の表記法です。 + </simpara> + </listitem> + </varlistentry> + <varlistentry> + <term><emphasis>\011</emphasis></term> + <listitem> + <simpara> + は常にタブです。 + </simpara> + </listitem> + </varlistentry> + <varlistentry> + <term><emphasis>\0113</emphasis></term> + <listitem> + <simpara> + はタブの後に文字 "3" が続いたものです。 + </simpara> + </listitem> + </varlistentry> + <varlistentry> + <term><emphasis>\113</emphasis></term> + <listitem> + <simpara> + (99 を超える後方参照はないので) 8進数 113 を表す文字。 + </simpara> + </listitem> + </varlistentry> + <varlistentry> + <term><emphasis>\377</emphasis></term> + <listitem> + <simpara> + は1ビットの並びで構成される1バイトです。 + </simpara> + </listitem> + </varlistentry> + <varlistentry> + <term><emphasis>\81</emphasis></term> + <listitem> + <simpara> + は後方参照または、ヌル文字の後に2つの文字 "8" および "1" が + 続いたものです。 + </simpara> + </listitem> + </varlistentry> + </variablelist> + </para> + <para> 3桁を超えて8進数は読みこまれないため、値が100以上の8進数には ゼロを前につけるべきではないことに注意してください。 - + </para> + <para> 1バイトの値を定義するあらゆるシーケンスは、文字クラスの内部 および外部で使用可能です。加えて、文字クラスの内部ではシーケンス "\b" はバックスペース(16進 0x)として解釈されます。 文字クラスの外では、別の意味を有します。(以下を参照下さい) - + </para> + <para> バックスラッシュの第3の使用法は、包括的な文字型を指定する用途 です。 - - \d 10進数字 - \D 10進数字でない全ての文字 - \s 空白文字 - \S 空白文字以外の文字 - \w 単語構成文字 - \W 単語構成文字以外 - - エスケープシーケンスの各組は、全文字の集合を2つの集合に - 分割します。全ての文字は、各組のうち、片方だ?kマッチします。 - - 単語構成文字とは英字または数字またはアンダースコア文字であり、 - Perl の "単語" と成り得る文字のことです。 - 文字および数字の定義は、PCRE の文字テーブルにより制御され、 - ロケールを指定したマッチを行った場合には変わる可能性があります。 - ("ロケールのサポート"を参照下さい) - 例えば、"fr" (フランス語)ロケールの場合、いくつかの128を超える - 文字コードの文字は、アクセント付きの文字に使用されており、 - これらは \w にマッチします。 - + </para> + <para> + <variablelist> + <varlistentry> + <term><emphasis>\d</emphasis></term> + <listitem> + <simpara> + 10進数字 + </simpara> + </listitem> + </varlistentry> + <varlistentry> + <term><emphasis>\D</emphasis></term> + <listitem> + <simpara> + 10進数字でない全ての文字 + </simpara> + </listitem> + </varlistentry> + <varlistentry> + <term><emphasis>\s</emphasis></term> + <listitem> + <simpara> + 空白文字 + </simpara> + </listitem> + </varlistentry> + <varlistentry> + <term><emphasis>\S</emphasis></term> + <listitem> + <simpara> + 空白文字以外の文字 + </simpara> + </listitem> + </varlistentry> + <varlistentry> + <term><emphasis>\w</emphasis></term> + <listitem> + <simpara> + 単語構成文字 + </simpara> + </listitem> + </varlistentry> + <varlistentry> + <term><emphasis>\W</emphasis></term> + <listitem> + <simpara> + 単語構成文字以外 + </simpara> + </listitem> + </varlistentry> + </variablelist> + </para> + <para> + エスケープシーケンスの各組は、全文字の集合を2つの集合に + 分割します。全ての文字は、各組のうち、片方だ?kマッチします。 + </para> + <para> + 単語構成文字とは英字または数字またはアンダースコア文字であり、 + Perl の "単語" と成り得る文字のことです。 + 文字および数字の定義は、PCRE の文字テーブルにより制御され、 + ロケールを指定したマッチを行った場合には変わる可能性があります。 + ("ロケールのサポート"を参照下さい) + 例えば、"fr" (フランス語)ロケールの場合、いくつかの128を超える + 文字コードの文字は、アクセント付きの文字に使用されており、 + これらは \w にマッチします。 + </para> + <para> これらの文字型シーケンスは、文字クラスの内外によらず使用可能 です。これらは、適当な型の1文字にマッチします。現在マッチング を行っている位置が検索対象文字列の終端である場合、マッチできる 文字はないので全てのマッチングは失敗します。 - + </para> + <para> バックスラッシュの第4の使用法は、単純な言明です。 言明は、検索対象文字列から文字を全く抜き出さずに マッチが特定の位置で生じるという拘束条件を指定します。 より複雑な言明に関するサブパターンの使用法を以下に説明します。 バックスラッシュ付きの言明は次のものがあります。 - - \b 単語の境界 - \B 単語の境界でない - \A 検索対象の始まり (複数行モードとは独立) - \Z 検索対象の終わりまたは終端の改行 (複数行モードとは独立) - \z 検索対象の終わり (複数行モードとは独立) - - これらの言明は、文字クラスには使用できません。(しかし、文字クラスの - 中では、"\b" には別の意味、つまり、バックスペース文字という意味が - あることに注意してください) - - 単語の境界は、検索対象文字列において、現在の文字および前の文字が - 両方は \w または \W にマッチしない - (すなわち、片方は \w にマッチして、もう片方は\W にマッチする)か、 - または、最初のまたは最後の文字が \w にマッチするならば、 - それぞれ、文字列の始めまたは終わりの位置です。 - - 言明 \A, \A, \z は、(以下に説明する)どんなオプションを設定しても - 文字列の始端および終端にのみマッチするハット記号およびドル記号 - とは異なっています。 - これらの言明は、PCRE_NOTBOL または PCRE_NOTEOL オプションの影響を - 受けません。\Z 及び \z の違いは、\Z は、文字列の終端と同時に - 文字列の最後の文字が改行の場合に前の文字にマャÁするのに対し、 - \z は終端にのみマッチします。 - </literallayout> + </para> + <para> + <variablelist> + <varlistentry> + <term><emphasis>\b</emphasis></term> + <listitem> + <simpara> + 単語の境界 + </simpara> + </listitem> + </varlistentry> + <varlistentry> + <term><emphasis>\B</emphasis></term> + <listitem> + <simpara> + 単語の境界でない + </simpara> + </listitem> + </varlistentry> + <varlistentry> + <term><emphasis>\A</emphasis></term> + <listitem> + <simpara> + 検索対象の始まり (複数行モードとは独立) + </simpara> + </listitem> + </varlistentry> + <varlistentry> + <term><emphasis>\Z</emphasis></term> + <listitem> + <simpara> + 検索対象の終わりまたは終端の改行 (複数行モードとは独立) + </simpara> + </listitem> + </varlistentry> + <varlistentry> + <term><emphasis>\z</emphasis></term> + <listitem> + <simpara> + 検索対象の終わり (複数行モードとは独立) + </simpara> + </listitem> + </varlistentry> + </variablelist> + </para> + <para> + これらの言明は、文字クラスには使用できません。(しかし、文字クラスの + 中では、"<literal>\b</literal>" には別の意味、つまり、バックスペー + ス文字という意味があることに注意してください) + </para> + <para> + 単語の境界は、検索対象文字列において、現在の文字および前の文字が + 両方は<literal>\w</literal>または<literal>\W</literal>にマッチし + ない(すなわち、片方は<literal>\w</literal>にマッチして、もう片方 + は<literal>\W</literal>にマッチする)か、または、最初のまたは最後 + の文字が<literal>\w</literal>にマッチするならば、それぞれ、文字 + 列の始めまたは終わりの位置です。 + </para> + <para> + 言明<literal>\A</literal>, <literal>\Z</literal>, + <literal>\z</literal>は、(以下に説明する)どんなオプションを設定 + しても文字列の始端および終端にのみマッチするハット記号およびドル + 記号とは異なっています。 + これらの言明は、<link + linkend="pcre.pattern.modifiers">PCRE_NOTBOL</link>または<link + linkend="pcre.pattern.modifiers">PCRE_NOTEOL</link>オプションの + 影響を受けません。<literal>\Z</literal>及び<literal>\z</literal> + の違いは、<literal>\Z</literal>は、文字列の終端と同時に文字列の + 最後の文字が改行の場合に前の文字にマッチするのに対し、 + <literal>\z</literal>は終端にのみマッチします。 + </para> </refsect2> <refsect2 id="regexp.reference.circudollar"> @@ -1187,124 +1643,134 @@ る必要はありませんが、使用さ??枝の最後のアイテムである必要 があります。ドル記号は、文字クラスの中では特別な意味を有しま せん。 - - ドル記号の意味は、コンパイル時またはマッチング時の - PCRE_DOLLAR_ENDONLY オプションの設定により - 文字列の終端にのみマッチするように変更することが可能です。 - このせっていは、\Z 言明には影響を与えません。 - - ハット記号とドル記号の意味は、PCRE_MULTILINE オプションを設定 - した場合に変化します。これを設定した場合、対象文字列の始端及び - 終端にマッチするのに加えて、文字列内部の "\n" 文字の直前 - 及び直後にそれぞれマッチします。例えば、パターン /^abc$/ は - 複数行モードでは対象文字列 "def\nabc" にマッチしますが、 - そうでない場合はマッチしません。結果として、 - 全ての枝が "^" で始まるため、単一行モードでアンカー付きのパタ - ーンは、複数行モードではアンカー無しとなります。 - PCRE_DOLLAR_ENDONLY オプションは、PCRE_MULTILINE が設定されている - 場合は無視されます。 - - 両方のモードで対象の始端および終端にマッチさせるために - シーケンス \A, \Z, \z を使用出来ることに注意してください。 - パターンの枝が \A を付けて始まる場合、 - PCRE_MULTILINE の設定によらず、常にアンカー付きとなります。 + + ドル記号の意味は、コンパイル時またはマッチング時の + <link linkend="pcre.pattern.modifiers">PCRE_DOLLAR_ENDONLY</link> + オプションの設定により文字列の終端にのみマッチするように変更する + ことが可能です。この設定は、\Z 言明には影響を与えません。 + + ハット記号とドル記号の意味は、<link + linkend="pcre.pattern.modifiers">PCRE_MULTILINE</link>オプション + を設定した場合に変化します。これを設定した場合、対象文字列の始端 + 及び終端にマッチするのに加えて、文字列内部の "\n" 文字の直前 + 及び直後にそれぞれマッチします。例えば、パターン /^abc$/ は + 複数行モードでは対象文字列 "def\nabc" にマッチしますが、 + そうでない場合はマッチしません。結果として、 + 全ての枝が "^" で始まるため、単一行モードでアンカー付きのパタ + ーンは、複数行モードではアンカー無しとなります。 + <link linkend="pcre.pattern.modifiers">PCRE_DOLLAR_ENDONLY</link> + オプションは、<link + linkend="pcre.pattern.modifiers">PCRE_MULTILINE</link>が設定され + ている場合は無視されます。 + + 両方のモードで対象の始端および終端にマッチさせるために + シーケンス \A, \Z, \z を使用出来ることに注意してください。 + パターンの枝が \A を付けて始まる場合、 + <link linkend="pcre.pattern.modifiers">PCRE_MULTILINE</link>の設 + 定によらず、常にアンカー付きとなります。 </literallayout> </refsect2> - <refsect2 id="regexp.reference.dot"> - <title>終止符</title> + + <refsect2 id="regexp.reference.dot"> + <title>終止符</title> <literallayout> - 文字クラスの外側では、パターンの中のドットは非出力文字を含む - (デフォルトでは)改行以外の対象の全ての1文字にマッチします。 - PCRE_DOTALL オプションを設定した場合、ドットは改行にもマッチ - します。ドットの処理は、ハット記号およびドル記号とは完全に独立し - ています。共通な点は共に改行文字を含むことだけです。 - ドットは、文字クラスの中では特別な意味を持ちません。 + 文字クラスの外側では、パターンの中のドットは非出力文字を含む + (デフォルトでは)改行以外の対象の全ての1文字にマッチします。 + <link linkend="pcre.pattern.modifiers">PCRE_DOTALL</link>オプショ + ンを設定した場合、ドットは改行にもマッチします。ドットの処理は、 + ハット記号およびドル記号とは完全に独立しています。共通な点は共に + 改行文字を含むことだけです。 + ドットは、文字クラスの中では特別な意味を持ちません。 </literallayout> </refsect2> - <refsect2 id="regexp.reference.squarebrackets"> - <title>角括弧</title> - <literallayout> - 左ブラケットは文字クラスの開始を表し、右ブラケットにより終了 - します。右ブラケットは、それ自体特別なものではありません。 - 右ブラケットがクラスのメンバーとして必要な場合、(もしあるな - らば、最初にハット記号を持ってきた後で)クラスの最初の文字デ - ー?gあるか、バックスラッシュでエスケープする必要があります。 - - 文字クラスは、対象の1文字にマッチします。その文字はクラスにより - 定義される文字集合の中にある必要があります。ただし、 - クラスの最初の文字がハット記号の場合は、対象文字は暮らすにより - 定義される集合のん課兄あってはなりません。 - ハット記号がクラスのメンバーとして必要な場合は、必ず、最初の - 文字としないか、バックスラッシュでエスケープするようにして下 - さい。 - 例えば、文字クラス [aeiou] は小文字の母音にマッチしますが、 - [^aeiou] は小文字の母音以外の文字にマッチします。 - ハット記号は、存在しないものを列挙することによりクラスにある - 文字を指定する便利な表記です。 - ハット記号は、言明ではありません。対象文字列から文字を消費し、 - 現在のポインタが文字列の終端にある場合には失敗します。 - - 大文字小文字を区別しないマッチが行われた場合、クラスの文字は - 大文字・小文字の両方を表します。これは、例えば、大文字小文字 - を区別しない場合のマッチ [aeiou] は "a" と同様に "A" にマッチ - し、文字小文字を区別しない場合のマッチ [^aeiou] は "A" にマッ - チしません。一方、大文字小文字を区別する場合はマッチします。 - - PCRE_DOTALL または PCRE_MULTILINE オプションをどのように設定 - しようとも改行文字は、文字クラスにおいて特別な方法で処理され - ません。[^a] のようなクラスは常に改行にマッチします。 - - マイナス (ハイフン)文字は文字クラスの中で文字の範囲を指定する - ために使用されます。例えば、[d-m] は d と m の間のあらゆる - 文字にマッチします。間にナス文字がクラスの中に必要な場合は、 - バックスラッシュでエスケープするか、クラスの最初または最後の - ような範囲を示すとは解釈されない場所に使用して下さい。 - 文字リテラル "]" を範囲の最後の文字として使用することはできま - せん。[W-]46] のようなパターンは、2つ文字のクラス("W" および + <refsect2 id="regexp.reference.squarebrackets"> + <title>角括弧</title> + <literallayout> + 左ブラケットは文字クラスの開始を表し、右ブラケットにより終了 + します。右ブラケットは、それ自体特別なものではありません。 + 右ブラケットがクラスのメンバーとして必要な場合、(もしあるな + らば、最初にハット記号を持ってきた後で)クラスの最初の文字データ + があるか、バックスラッシュでエスケープする必要があります。 + + 文字クラスは、対象の1文字にマッチします。その文字はクラスにより + 定義される文字集合の中にある必要があります。ただし、 + クラスの最初の文字がハット記号の場合は、対象文字は暮らすにより + 定義される集合のん課兄あってはなりません。 + ハット記号がクラスのメンバーとして必要な場合は、必ず、最初の + 文字としないか、バックスラッシュでエスケープするようにして下 + さい。 + + 例えば、文字クラス [aeiou] は小文字の母音にマッチしますが、 + [^aeiou] は小文字の母音以外の文字にマッチします。 + ハット記号は、存在しないものを列挙することによりクラスにある + 文字を指定する便利な表記です。 + ハット記号は、言明ではありません。対象文字列から文字を消費し、 + 現在のポインタが文字列の終端にある場合には失敗します。 + + 大文字小文字を区別しないマッチが行われた場合、クラスの文字は + 大文字・小文字の両方を表します。これは、例えば、大文字小文字 + を区別しない場合のマッチ [aeiou] は "a" と同様に "A" にマッチ + し、文字小文字を区別しない場合のマッチ [^aeiou] は "A" にマッ + チしません。一方、大文字小文字を区別する場合はマッチします。 + + <link linkend="pcre.pattern.modifiers">PCRE_DOTALL</link>または + <link linkend="pcre.pattern.modifiers">PCRE_MULTILINE</link>オプ + ションをどのように設定しようとも改行文字は、文字クラスにおいて特 + 別な方法で処理されません。[^a] のようなクラスは常に改行にマッチ + します。 + + マイナス (ハイフン)文字は文字クラスの中で文字の範囲を指定する + ために使用されます。例えば、[d-m] は d と m の間のあらゆる + 文字にマッチします。間にナス文字がクラスの中に必要な場合は、 + バックスラッシュでエスケープするか、クラスの最初または最後の + ような範囲を示すとは解釈されない場所に使用して下さい。 + 文字リテラル "]" を範囲の最後の文字として使用することはできま + せん。[W-]46] のようなパターンは、2つ文字のクラス("W" および "-")の後にリテラル文字列 "46]" が続いているクラスとして解釈 - され、"W46]"または "-46]" にマッチします。しかし、範囲の終端 - として解釈される "]" をバックスラッシュでエスケープした場合、 - [W-\]46] は範囲の後に2つの文字が続く一つのクラスとして解釈さ - れます。"]" の8進あるいは16進表現も範囲の終端として使用可能 - です。 - - 範囲指定では、ASCII 照合処理を行います。範囲では、[\000-\037] - のように数値的に指定した文字も使用可能です。文字を含む範囲が - 大文字小文字を区別しないマッチが設定されているときに使用された - 場合、大文字小文字の両方にマッチします。例えば、[W-c] は、 - [][\^_`wxyzabc] に等価であり、大文字小文字に関係なくマッチし - ます。文字テーブルで "fr" ロケールを使用している場合、 - [\xc8-\xcb] は、大文字小文字の区別無くアクセント付きの E に - マッチします。 - - 文字型 \d, \D, \s, \S, \w, \W は文字クラスの中でも指定可能 - であり、クラスにマッチする文字を追加します。例えば、[\dABCDEF] - は、16進数にマッチします。ハット記号は大文字と組み合わせて - 小文字にマッチング??より範囲の狭い文字集合を簡便に指定する - ことができます。 - 例えば、クラス [^\W_] は文字または数字にマッチしますが、アンダ - ースコアにはマッチしません。 - - \, -, (始端の)^ 以外の全ての英数字でない文字および終端の ] は、 - 文字クラスにおいて特別でない文字ですが、エスケープした場合でも - 悪影響はありません。 + され、"W46]"または "-46]" にマッチします。しかし、範囲の終端 + として解釈される "]" をバックスラッシュでエスケープした場合、 + [W-\]46] は範囲の後に2つの文字が続く一つのクラスとして解釈さ + れます。"]" の8進あるいは16進表現も範囲の終端として使用可能 + です。 + + 範囲指定では、ASCII 照合処理を行います。範囲では、[\000-\037] + のように数値的に指定した文字も使用可能です。文字を含む範囲が + 大文字小文字を区別しないマッチが設定されているときに使用された + 場合、大文字小文字の両方にマッチします。例えば、[W-c] は、 + [][\^_`wxyzabc] に等価であり、大文字小文字に関係なくマッチし + ます。文字テーブルで "fr" ロケールを使用している場合、 + [\xc8-\xcb] は、大文字小文字の区別無くアクセント付きの E に + マッチします。 + + 文字型 \d, \D, \s, \S, \w, \W は文字クラスの中でも指定可能 + であり、クラスにマッチする文字を追加します。例えば、[\dABCDEF] + は、16進数にマッチします。ハット記号は大文字と組み合わせて + 小文字にマッチング??より範囲の狭い文字集合を簡便に指定する + ことができます。 + 例えば、クラス [^\W_] は文字または数字にマッチしますが、アンダ + ースコアにはマッチしません。 + + \, -, (始端の)^ 以外の全ての英数字でない文字および終端の ] は、 + 文字クラスにおいて特別でない文字ですが、エスケープした場合でも + 悪影響はありません。 </literallayout> </refsect2> + <refsect2 id="regexp.reference.verticalbar"> <title>垂直バー</title> <literallayout> - 垂直バー文字は、選択肢を指定するパターンで使用されます。例えば、パターン + 垂直バー文字は、選択肢を指定するパターンで使用されます。例えば、パターン gilbert|sullivan - は、"gilbert" または "sullivan" にマッチします。選択肢の数に - 制限はありません。また、選択肢を空とすることが可能です - (空の文字列にマッチします)。マッチの過程は、各選択肢を左から - 右に逆に行い、最初に成功したものが使用されます。選択肢が(以下 - で説明する)サブパターンの中にある場合、"成功した"ということは - サブパターンの選択肢と同様にメインパターンの残りの部分もマッチ - したということを意?Wます。 + は、"gilbert" または "sullivan" にマッチします。選択肢の数に + 制限はありません。また、選択肢を空とすることが可能です + (空の文字列にマッチします)。マッチの過程は、各選択肢を左から + 右に逆に行い、最初に成功したものが使用されます。選択肢が(以下 + で説明する)サブパターンの中にある場合、"成功した"ということは + サブパターンの選択肢と同様にメインパターンの残りの部分もマッチ + したということを意?Wます。 </literallayout> </refsect2> @@ -1312,103 +1778,113 @@ <title>内部オプション設定</title> <literallayout> - PCRE_CASELESS, PCRE_MULTILINE, PCRE_DOTALL, PCRE_EXTENDED の - 設定は、"(?" および ")" で括った Perl オプション文字により - パターン内部で変更可能です。 - - i PCRE_CASELESS を指定 - m PCRE_MULTILINE を指定 - s PCRE_DOTALL を指定 - x PCRE_EXTENDED を指定 - - 例えば、(?im) は大文字小文字を区別しない、複数行マッチングを - 指定します。ハイフン文字を前につけることによりそのオプション - を解除することも可能です。(?im-sx) のように設定と解除を組み合 - わせることも可能です。この場合は、PCRE_CASELESS および - PCRE_MULTILINE が設定され、PCRE_DOTALL および PCRE_EXTENDED - が解除されます。ある文字がハイフンの前にも後にも指定された - 場合、そのオプションは解除されます。 - - オプション変更の適用範囲は設定が行われたパターンの場所に依存 - します。サブパターンの外側で設定された場合、その効果は、オプ - ションの設定あるいは解除がマッチングの最初で行われたのと同じ - となります。次のパターンは、全て全く同様に動作します。 + <link linkend="pcre.pattern.modifiers">PCRE_CASELESS</link> , + <link linkend="pcre.pattern.modifiers">PCRE_MULTILINE</link> , + <link linkend="pcre.pattern.modifiers">PCRE_DOTALL</link> , + <link linkend="pcre.pattern.modifiers">PCRE_EXTENDED</link>の + 設定は、"(?" および ")" で括った Perl オプション文字により + パターン内部で変更可能です。 + + i <link linkend="pcre.pattern.modifiers">PCRE_CASELESS</link>を指定 + m <link linkend="pcre.pattern.modifiers">PCRE_MULTILINE</link>を指定 + s <link linkend="pcre.pattern.modifiers">PCRE_DOTALL</link>を指定 + x <link linkend="pcre.pattern.modifiers">PCRE_EXTENDED</link>を指定 + + 例えば、(?im) は大文字小文字を区別しない、複数行マッチングを + 指定します。ハイフン文字を前につけることによりそのオプション + を解除することも可能です。(?im-sx) のように設定と解除を組み合 + わせることも可能です。この場合は、<link + linkend="pcre.pattern.modifiers">PCRE_CASELESS</link>および<link + linkend="pcre.pattern.modifiers">PCRE_MULTILINE</link>が設定され、 + <link linkend="pcre.pattern.modifiers">PCRE_DOTALL</link>および + <link linkend="pcre.pattern.modifiers">PCRE_EXTENDED</link> + が解除されます。ある文字がハイフンの前にも後にも指定された + 場合、そのオプションは解除されます。 + + オプション変更の適用範囲は設定が行われたパターンの場所に依存 + します。サブパターンの外側で設定された場合、その効果は、オプ + ションの設定あるいは解除がマッチングの最初で行われたのと同じ + となります。次のパターンは、全て全く同様に動作します。 (?i)abc a(?i)bc ab(?i)c abc(?i) - はコンパイル後のパターンとしては、パターン abc に PCRE_CASELESS - を設定したものとなり同じになります。言いかえると、このような - "最上位の"設定は、(サブパターン内部で他の変更を行わない限り) - パターン全体に適用されます。最上位と同じ設定が複数回行われて - いる場合、最も右側の設定が使用されます。 - - サブパターンの内部でオプションの変更が行われた場合、効果は - 異なります。この動作の変更は、Perl 5.005 で行われました。 - サブパターン内のオプション変更は、それを指定したサブパター - ンのその部分にのみ影響します。そのため、 + はコンパイル後のパターンとしては、パターン abc に + <link linkend="pcre.pattern.modifiers">PCRE_CASELESS</link> + を設定したものとなり同じになります。言いかえると、このような + "最上位の"設定は、(サブパターン内部で他の変更を行わない限り) + パターン全体に適用されます。最上位と同じ設定が複数回行われて + いる場合、最も右側の設定が使用されます。 + + サブパターンの内部でオプションの変更が行われた場合、効果は + 異なります。この動作の変更は、Perl 5.005 で行われました。 + サブパターン内のオプション変更は、それを指定したサブパター + ンのその部分にのみ影響します。そのため、 (a(?i)b)c - は、abc および aBc にマッチし、(PCRE_CASELESS が使用されて - いないと仮定した場合、)他の文字列にはマッチしません。 - このように、オプションは、パターンの各場所に異なった設定を行う - ことが可能です。ある選択肢に御こなれた変更は全て、同じサブパ - ターン内の後に続く枝に波及します。例えば、 + は、abc および aBc にマッチし、(<link + linkend="pcre.pattern.modifiers">PCRE_CASELESS</link>が使用され + ていないと仮定した場合、)他の文字列にはマッチしません。 + このように、オプションは、パターンの各場所に異なった設定を行う + ことが可能です。ある選択肢に御こなれた変更は全て、同じサブパ + ターン内の後に続く枝に波及します。例えば、 (a(?i)b|c) - は、"C" にマッチする際に最初の枝がオプション設定前に破棄 - されているにもかかわらず、"ab", "aB", "c", "C" にマッチします。 - これは、オプション設定の効果がコンパイル時に生じることにより - ます。そうでないと、非常に奇妙なことが生じることになります。 - - PCRE 特有のオプション、PCRE_UNGREEDY および PCRE_EXTRA - はそれぞれ文字 U および X を使用することにより、Perl 互換の - オプションと同様に変更することが可能です。 - (?X) フラグの設定は特別で、最上位の場合でも、常にパターン - 内で他の設定をオンにする前に指定する必要があります。 - このフラグは、最初に指定するのが最善です。 - + は、"C" にマッチする際に最初の枝がオプション設定前に破棄 + されているにもかかわらず、"ab", "aB", "c", "C" にマッチします。 + これは、オプション設定の効果がコンパイル時に生じることにより + ます。そうでないと、非常に奇妙なことが生じることになります。 + + PCRE 特有のオプション、<link + linkend="pcre.pattern.modifiers">PCRE_UNGREEDY</link>および<link + linkend="pcre.pattern.modifiers">PCRE_EXTRA</link>はそれぞれ文字 + U および X を使用することにより、Perl 互換のオプションと同様に変 + 更することが可能です。 + (?X) フラグの設定は特別で、最上位の場合でも、常にパターン + 内で他の設定をオンにする前に指定する必要があります。 + このフラグは、最初に指定するのが最善です。 </literallayout> </refsect2> + <refsect2 id="regexp.reference.subpatterns"> <title>サブパターン</title> <literallayout> - サブパターンは括弧(丸括弧)で区分され、ネストが可能です。 - パターンの一部をサブパターンとして指定するためには、2つのこ - とを行います。 + サブパターンは括弧(丸括弧)で区分され、ネストが可能です。 + パターンの一部をサブパターンとして指定するためには、2つのこ + とを行います。 - 1. 選択肢の集合をローカル化します。例えば、パターン + 1. 選択肢の集合をローカル化します。例えば、パターン cat(aract|erpillar|) - は、単語 "cat", "cataract", "caterpillar" にマッチします。 - 括弧をつけないと、このパターンは、"cataract", - "erpillar" または空の文字列にマッチしてしまいます。 - - 2. 括弧は、サブパターンを(以下で定義する)値を取得するサブパターン - として設定します。パターン全体がマッチしたサブパターンにマッチ - した対象文字列の一部は、 - <function>pcre_exec</function> の <emphasis>ovector</emphasis> - 引数によりコールした側に返されます。値を取得するサブパターンの - 番号を得るために括弧の始まりは(1から始まって)左から右に数えられます。 - - 例えば、文字列 "the red king" を次のパターンにマッチさせた場合、 + は、単語 "cat", "cataract", "caterpillar" にマッチします。 + 括弧をつけないと、このパターンは、"cataract", + "erpillar" または空の文字列にマッチしてしまいます。 + + 2. 括弧は、サブパターンを(以下で定義する)値を取得するサブパターン + として設定します。パターン全体がマッチしたサブパターンにマッチ + した対象文字列の一部は、 + <function>pcre_exec</function> の <emphasis>ovector</emphasis> + 引数によりコールした側に返されます。値を取得するサブパターンの + 番号を得るために括弧の始まりは(1から始まって)左から右に数えられます。 + + 例えば、文字列 "the red king" を次のパターンにマッチさせた場合、 the ((red|white) (king|queen)) - 取得される部分文字列は、 "red king", "red", "king" であり、 - それぞれ 1, 2, 3 番となります。 + 取得される部分文字列は、 "red king", "red", "king" であり、 + それぞれ 1, 2, 3 番となります。 - 括弧が2つの機能を有しているという事実が常に良い方に働くわけで - はありません。値を取得する必要はないが、サブパターンを複数用 - いることが必要である場合も少なくありません。左括弧の後に "?:" - を付けた場合、そのサブパターンは値の取得を行わず、値を取得する - サブパターンの番号を計算する際にも加算されません。例えば、文字列 - "the white queen" は次のパターンをマッチさせてみましょう。 + 括弧が2つの機能を有しているという事実が常に良い方に働くわけで + はありません。値を取得する必要はないが、サブパターンを複数用 + いることが必要である場合も少なくありません。左括弧の後に "?:" + を付けた場合、そのサブパターンは値の取得を行わず、値を取得する + サブパターンの番号を計算する際にも加算されません。例えば、文字列 + "the white queen" は次のパターンをマッチさせてみましょう。 the ((?:red|white) (king|queen)) @@ -1515,17 +1991,18 @@ はCコメントに正しくマッチします。様々な反復指定子の意味は、 他には変化せず、好ましいマッチの数だけが変更されます。 - この疑問符の使用法を反復指定子がその?kある場合の使用法と - こんなランしないようにっf下さい。2稩^の使用法があるので、 - 時々、次のように2重に使用されることがあります。 + この疑問符の使用法を反復指定子がその右にある場合の使用法と混乱し + ないで下さい。このように2種類の使用法があるため、時々、次のように + 2重に使用されることがあります。 \d??\d 選択により1桁の数字にマッチしますが、パターンの残りがマッチ する唯一の方法である場合には、2桁の数値にマッチすることが可能です。 - PCRE_UNGREEDY オプションが設定された場合(Perl ではこのオプション - は使用できません)、反復指定子はデフォルトでは貪欲ではありません。 + <link linkend="pcre.pattern.modifiers">PCRE_UNGREEDY</link>オプショ + ンが設定された場合(Perl ではこのオプションは使用できません)、反復 + 指定子はデフォルトでは貪欲ではありません。 しかし、この反復指定子は、後ろに疑問符をつけることにより貪欲 にすることが可能です。言いかえると、疑問符は、デフォルトの動作 を逆転します。 @@ -1535,8 +2012,9 @@ または最小の大きさに応じてより多くの保存領域が必要となります。 パターンが、.* または .(0,) で始まり、(Perl で等価なものは /s) - PCRE_DOTALL オプションが設定されている場合、. は改行にマッチ - できるようになり、パ?üóは暗黙のうちにアンカー付きとなります。 + <link linkend="pcre.pattern.modifiers">PCRE_DOTALL</link>オプショ + ンが設定されている場合、. は改行にマッチできるようになり、暗黙の + うちにアンカー付きとなります。 これは、後ろに続くものによらず、対象文字列の各文字の位置に 対して試行されるためです。このため、最初にマッチした後で どこかの位置で全体のマッチを再び行うことはできません。 @@ -1544,7 +2022,9 @@ PCRE はこのようなパターンを \A が前にあるものとして処理します。 対象文字列が改行を含まないことが既知の場合、 パターンが .* で始まる場合の最適化のためにもしくは ^ を用いて - アンカーを陽に示すためにPCRE_DOTALL を設定する価値があります。 + アンカーを陽に示すために<link + linkend="pcre.pattern.modifiers">PCRE_DOTALL</link>を設定する価値 + があります。 値を取得するサブパターンが繰り返される時、取得される値は、 最後の繰り返しでマッチした部分文字列です。例えば、 @@ -1567,194 +2047,193 @@ <refsect2 id="regexp.reference.back_references"> <title>後方参照</title> <literallayout> - 文字クラスの外で、バックスラッシュの後に 0 より大きい数字を - 付けたものはパターンで以前に(すなわち左にある)値を取得した - サブパターンに対する後方参照であり、前にある値の取得を行う - 左括弧の数まで使用可能です。 - - しかし、バックスラッシュの後に続く10進数が10未満の場合は常に - 後方参照として解釈され、パターン全体の値を取得する左括弧の数 - に満たない場合にのみエラーとなります。 - 言いかえると、参照される括弧は10未満の数については参照する側 - の左にある必要がないということです。 - バックスラッシュの後に数字が続く場合の処理の詳細については、 - 上記の "バックスラッシュ"という題の節を参照下さい。 - - 後方参照は、サブパターン自体がマッチするものよりむしろ、 - 現在の対象文字列における値を取得するパターンが実際にマッチし - たものにマッチします。このため、パターン - + 文字クラスの外で、バックスラッシュの後に 0 より大きい数字を + 付けたものはパターンで以前に(すなわち左にある)値を取得した + サブパターンに対する後方参照であり、前にある値の取得を行う + 左括弧の数まで使用可能です。 + + しかし、バックスラッシュの後に続く10進数が10未満の場合は常に + 後方参照として解釈され、パターン全体の値を取得する左括弧の数 + に満たない場合にのみエラーとなります。 + 言いかえると、参照される括弧は10未満の数については参照する側 + の左にある必要がないということです。 + バックスラッシュの後に数字が続く場合の処理の詳細については、 + 上記の "バックスラッシュ"という題の節を参照下さい。 + + 後方参照は、サブパターン自体がマッチするものよりむしろ、 + 現在の対象文字列における値を取得するパターンが実際にマッチし + たものにマッチします。このため、パターン + (sens|respons)e and \1ibility - は、"sense and sensibility" および "response and responsi- - bility" にマッチしますが、"sense and responsibility" には - マッチしません。後方参照の時点で、大文字小文字を区別したマッチ - が有効の場合、文字の大文字小文字が関係します。例えば、 - + は、"sense and sensibility" および "response and responsi- + bility" にマッチしますが、"sense and responsibility" には + マッチしません。後方参照の時点で、大文字小文字を区別したマッチ + が有効の場合、文字の大文字小文字が関係します。例えば、 + ((?i)rah)\s+\1 - - は、"rah rah" および "RAH RAH" にマッチしますが、 - 元の取得したサブパターンは大文字小文字を区別せずマッチしてい - るにもかかわらず、"RAH rah" にはマッチしません。 - - 同じサブパターンに複数回の後方参照を行Fことができます。ある - サブパターンが特定のマッチで実際には使用されていない場合、 - 後方参照は常に失敗します。例えば、パターン - + + は、"rah rah" および "RAH RAH" にマッチしますが、 + 元の取得したサブパターンは大文字小文字を区別せずマッチしてい + るにもかかわらず、"RAH rah" にはマッチしません。 + + 同じサブパターンに複数回の後方参照を行Fことができます。ある + サブパターンが特定のマッチで実際には使用されていない場合、 + 後方参照は常に失敗します。例えば、パターン + (a|(bc))\2 - は、"bc" ではなく "a" に最初にマッチする場合に常に失敗します。 - 最大 99 個の後方参照を使用できるため、バックスラッシュの後に - 数字が続くものは全て後方参照番号の可能性がある集合として解釈 - されます。 - パターンの後に数字が続く場合、後方参照を終了するために - なんらかの区切り文字を置く必要があります。 - PCRE_EXTENDED オプションを設定している場合、空白を区切り文字 - とすることができます。その他の場合は空のコメントを使用できます。 - - 参照する括弧の中にある後方参照は、サブパターンを最初に使用し - た際に失敗します。このため、(a\1) は何にもマッチしません。 - しかし、このような参照は、複数回使用するサブパターンの内部で - 有用です。例えば、次のパターン - + は、"bc" ではなく "a" に最初にマッチする場合に常に失敗します。 + 最大 99 個の後方参照を使用できるため、バックスラッシュの後に + 数字が続くものは全て後方参照番号の可能性がある集合として解釈 + されます。 + パターンの後に数字が続く場合、後方参照を終了するために + なんらかの区切り文字を置く必要があります。 + <link linkend="pcre.pattern.modifiers">PCRE_EXTENDED</link>オプ + ションを設定している場合、空白を区切り文字とすることができます。 + その他の場合は空のコメントを使用できます。 + + 参照する括弧の中にある後方参照は、サブパターンを最初に使用し + た際に失敗します。このため、(a\1) は何にもマッチしません。 + しかし、このような参照は、複数回使用するサブパターンの内部で + 有用です。例えば、次のパターン + (a|b\1)+ - は、"a" の並び、および "aba"、"ababaa" 等にもマッチします。 - サブパターンの各反復において、後方参照は、前の繰り返しに対応 - する文字列にマッチします。これを動作させるために、最初の反復 - 時に後方参照にマッチする必要がないようなパターンである必要が - あります。これは上の例のように選択を使用するか、ゼロを最小と - する反復指定子により行うことができます。 - + は、"a" の並び、および "aba"、"ababaa" 等にもマッチします。 + サブパターンの各反復において、後方参照は、前の繰り返しに対応 + する文字列にマッチします。これを動作させるために、最初の反復 + 時に後方参照にマッチする必要がないようなパターンである必要が + あります。これは上の例のように選択を使用するか、ゼロを最小と + する反復指定子により行うことができます。 </literallayout> </refsect2> <refsect2 id="regexp.reference.assertions"> <title>言明</title> <literallayout> - 言明は、現在マッチを行っている位置の後に続くか前にある文字に - 対するテストであり、実際には文字への作用を行いません。 - - \b, \B, \A, \Z, \z, ^, $ のような簡単な言明コードを以下で説 - 明します。より複雑な言明は、サブパターンとしてコード化されま - す。2種類の言明があります。対象文字列において現在位置の前を - 見るものと、後ろを見るものです。 - - 言明サブパターンは、現在マッチを行っている位置を変更ししない - ことを除き、通常と同じようにマッチされます。前方への言明は、 - 肯定言明の場合 (?= で、否定言明の場合 (?! で始まります。例えば、 + 言明は、現在マッチを行っている位置の後に続くか前にある文字に + 対するテストであり、実際には文字への作用を行いません。 + + \b, \B, \A, \Z, \z, ^, $ のような簡単な言明コードを以下で説 + 明します。より複雑な言明は、サブパターンとしてコード化されま + す。2種類の言明があります。対象文字列において現在位置の前を + 見るものと、後ろを見るものです。 + + 言明サブパターンは、現在マッチを行っている位置を変更ししない + ことを除き、通常と同じようにマッチされます。前方への言明は、 + 肯定言明の場合 (?= で、否定言明の場合 (?! で始まります。例えば、 \w+(?=;) - は、セミコロンが後に続く単語にマッチしますが、マッチするもの - には、セミコロンを含ません。そして、 + は、セミコロンが後に続く単語にマッチしますが、マッチするもの + には、セミコロンを含ません。そして、 foo(?!bar) - は、"bar" が後ろに続かない "foo" にマッチします。 - 見かけは似ているパターンに注意して下さい。 + は、"bar" が後ろに続かない "foo" にマッチします。 + 見かけは似ているパターンに注意して下さい。 (?!foo)bar - は、"foo" 以外のものが前にある "bar" の存在を見つけられません。 - 次の3文字が "bar" である場合に、(?!foo) は常に &true; となるため - に、このパターンは、"bar" の存在を見つけることができないのです。 - この動作を実現するためには、後方言明が必要です。 - 後方言明は、肯定言明の場合 (?&lt;= で、否定言明の場合 (?&lt;! - で始まります。例えば、 + は、"foo" 以外のものが前にある "bar" の存在を見つけられません。 + 次の3文字が "bar" である場合に、(?!foo) は常に &true; となるため + に、このパターンは、"bar" の存在を見つけることができないのです。 + この動作を実現するためには、後方言明が必要です。 + 後方言明は、肯定言明の場合 (?&lt;= で、否定言明の場合 (?&lt;! + で始まります。例えば、 (?&lt;!foo)bar - は、"foo" が前にない "bar" の存在を見つけます。後方言明の内容 - は、マッチする文字列全体が固定長である必要があることに制限さ - れています。しかし、複数の選択肢がある場合、全ての同じ固定長 - である必要はありません。つまり、 + は、"foo" が前にない "bar" の存在を見つけます。後方言明の内容 + は、マッチする文字列全体が固定長である必要があることに制限さ + れています。しかし、複数の選択肢がある場合、全ての同じ固定長 + である必要はありません。つまり、 (?&lt;=bullock|donkey) - は使用可能ですが、 + は使用可能ですが、 (?&lt;!dogs?|cats?) - はコンパイル時にエラーを生じます。異なった長さの文字列にマッ - チする枝は、後方言明の最上位でのみ使用可能です。この機能は、 - 全ての枝の同じ長さの文字列にマッチする必要がある Perl 5.005 - に対して拡張されています。次のような言明 - - (?&lt;=ab(c|de)) - - は、最上位の枝が2つの異なった長さにマッチし得るため、使用でき - ません。しかし、最上位の枝を2つ使用するように書き換えた場合は、 - 使用可能です。 + はコンパイル時にエラーを生じます。異なった長さの文字列にマッ + チする枝は、後方言明の最上位でのみ使用可能です。この機能は、 + 全ての枝の同じ長さの文字列にマッチする必要がある Perl 5.005 + に対して拡張されています。次のような言明 + + (?&lt;=ab(c|de)) + + は、最上位の枝が2つの異なった長さにマッチし得るため、使用でき + ません。しかし、最上位の枝を2つ使用するように書き換えた場合は、 + 使用可能です。 (?&lt;=abc|abde) - 後方言明の実装においては、選択肢毎に一時的に固定の幅だけ現在の - 位置を後退し、マッチを試みます。現在位置の前に十分な文字がない - 場合は、マッチは失敗とみなされます。1度しか使用されないサブパ - ターンと組み合わせた後方言明は、文字列の終端でのマッチングに - 特に有用です。節の最後に1度だけ使用するサブパターンの例を示し - ます。 + 後方言明の実装においては、選択肢毎に一時的に固定の幅だけ現在の + 位置を後退し、マッチを試みます。現在位置の前に十分な文字がない + 場合は、マッチは失敗とみなされます。1度しか使用されないサブパ + ターンと組み合わせた後方言明は、文字列の終端でのマッチングに + 特に有用です。節の最後に1度だけ使用するサブパターンの例を示し + ます。 - (あらゆる種類の)複数の言明を連続して指定することも可能です。 - 例えば、 + (あらゆる種類の)複数の言明を連続して指定することも可能です。 + 例えば、 (?&lt;=\d{3})(?&lt;!999)foo - - は前に "999" でない3桁の数字がある "foo" にマッチします。 - 各言明は対象文字列の同じ場所に独立して適用されることに注意して下 - さい。まず、前の3文字が全て数字であることがチェックされ、続いて、 - 同じ3文字が"999"でないことが確認されます。このパターンは、"foo"の - 前に6個の文字があり、その猜疑ょが数字で最後の3文字が"999"でないパ - ターンにはマッチしません。例えば、"123abcfoo"にはマッチしません。 - これを行うパターンは次のようになります。 + + は前に "999" でない3桁の数字がある "foo" にマッチします。 + 各言明は対象文字列の同じ場所に独立して適用されることに注意して下 + さい。まず、前の3文字が全て数字であることがチェックされ、続いて、 + 同じ3文字が"999"でないことが確認されます。このパターンは、"foo"の + 前に6個の文字があり、その猜疑ょが数字で最後の3文字が"999"でないパ + ターンにはマッチしません。例えば、"123abcfoo"にはマッチしません。 + これを行うパターンは次のようになります。 (?&lt;=\d{3}...)(?&lt;!999)foo - この時、最初の言明は、先行する6つの文字を探し、最初の3文字が数字 - であることを確認します。続いて、2番目の言明は、先行する3文字が - "999"でないことを確認します。 + この時、最初の言明は、先行する6つの文字を探し、最初の3文字が数字 + であることを確認します。続いて、2番目の言明は、先行する3文字が + "999"でないことを確認します。 - 言明は、自由に組み合わせてネストさせることが可能です。例えば、 + 言明は、自由に組み合わせてネストさせることが可能です。例えば、 (?&lt;=(?&lt;!foo)bar)baz - は、"bar" が前にあり、逆に "foo" が前にない "baz" にマッチします。 - 一方、 - + は、"bar" が前にあり、逆に "foo" が前にない "baz" にマッチします。 + 一方、 + (?&lt;=\d{3}(?!999)...)foo - は、3桁の数が先行し、中の3文字が"999"でない"foo"にマッチする別の - パターンです。 - - 言明のサブパターンは値を取得するサブパターンではなく、繰り - 返されないかもしれません。それは、同じことを複数回言明するの - は意味がないからです。ある言明が値を取得するサブパターンを - 中に含んでいる場合、パターン全体の中で値を取得するサブパター - ンを数えるために常に数え上げられます。 - 取得した部分文字列は、肯定言明では使用されますが、否定言明 - では意味を持ちません。 - - 言明の括弧で括られたサブパターンの数は、最大 200 です。 - + は、3桁の数が先行し、中の3文字が"999"でない"foo"にマッチする別の + パターンです。 + + 言明のサブパターンは値を取得するサブパターンではなく、繰り + 返されないかもしれません。それは、同じことを複数回言明するの + は意味がないからです。ある言明が値を取得するサブパターンを + 中に含んでいる場合、パターン全体の中で値を取得するサブパター + ンを数えるために常に数え上げられます。 + 取得した部分文字列は、肯定言明では使用されますが、否定言明 + では意味を持ちません。 + + 言明の括弧で括られたサブパターンの数は、最大 200 です。 </literallayout> </refsect2> <refsect2 id="regexp.reference.onlyonce"> <title>一回だけ使用するサブパターン</title> <literallayout> - 反復を最大化および最小化する場合は共に、後に続くものへのマッ - チが失敗した場合、反復数を変えた場合にパターンの残りにマッチ - することができるかどうかを調べるために反復する項目が再評価さ - れます。 - - 時々、こうした動作を行わない方が便利なことがります。 - それは、パターンの作者が続けていく価値がないとわかった時に - マッチの特性を変更するか、他のことがおきるよりも前に失敗させ - る場合です。 + 反復を最大化および最小化する場合は共に、後に続くものへのマッ + チが失敗した場合、反復数を変えた場合にパターンの残りにマッチ + することができるかどうかを調べるために反復する項目が再評価さ + れます。 + + 時々、こうした動作を行わない方が便利なことがります。 + それは、パターンの作者が続けていく価値がないとわかった時に + マッチの特性を変更するか、他のことがおきるよりも前に失敗させ + る場合です。 - 例えば、パターン \d+foo を次の対象に適用した場合を考えてみま - しょう。 + 例えば、パターン \d+foo を次の対象に適用した場合を考えてみま + しょう。 123456bar @@ -1849,89 +2328,88 @@ <refsect2 id="regexp.reference.conditional"> <title>条件付きサブパターン</title> <literallayout> - 言明の結果または前の値を取得するサブパターンがマッチしたかど - うかにより、サブパターンのマッチ処理を行ったり、サブパターンの - 2つの選択肢を選択したりすることが可能です。条件付きサブパター - ンには2つの形式があります。 + 言明の結果または前の値を取得するサブパターンがマッチしたかど + うかにより、サブパターンのマッチ処理を行ったり、サブパターンの + 2つの選択肢を選択したりすることが可能です。条件付きサブパター + ンには2つの形式があります。 (?(condition)yes-pattern) (?(condition)yes-pattern|no-pattern) - 条件が満たされた場合、yes-pattern が使用されます。そうでない - 場合は、(指定された場合は) no-pattern が使用されます。サブパ - ターンに2つ以上の選択肢がある場合、コンパイル時にエラーになり - ます。 - - 2種類の条件があります。括弧の間のテキストが数字の並びからなる - 場合、条件は、その番号の値を取得したサブパターンが前にマッチ - している場合に満たされます。次のパターンを見てみましょう。 - 可読性を高めるために意味のない空白を挿入し(PCRE_EXTENDED - オプションが指定されたと仮定します)、説明を簡単にするため - 3つの部分に分割しています。 + 条件が満たされた場合、yes-pattern が使用されます。そうでない + 場合は、(指定された場合は) no-pattern が使用されます。サブパ + ターンに2つ以上の選択肢がある場合、コンパイル時にエラーになり + ます。 + + 2種類の条件があります。括弧の間のテキストが数字の並びからなる + 場合、条件は、その番号の値を取得したサブパターンが前にマッチ + している場合に満たされます。次のパターンを見てみましょう。 + 可読性を高めるために意味のない空白を挿入し(PCRE_EXTENDED + オプションが指定されたと仮定します)、説明を簡単にするため + 3つの部分に分割しています。 ( \( )? [^()]+ (?(1) \) ) - 最初の部分は、オプションの左括弧にマッチし、その文字がある場 - 合に、最初の部分文字列として設定します。第2の部分は、括弧以外 - の一つ以上の文字にマッチします。第3の部分は、最初の括弧にマッ - チしたかどうかを調べる条件付きサブパターンです。マッチしている - 場合、つまり、対象が左括弧で始まっている場合、条件は&true;と - なり、yes-pattern が実行され、右括弧が必要となります。 - そうでない場合、no-pattern が存在しないため、サブパターンは - 何にもマッチしません。言いかえると、このパターンは、括弧なし - の並びにマッチし、オプションで括弧で囲まれた並びにマッチします。 - - 条件が数字の並っg内4合、言明となります。肯定あるいは否定の - 前方または後方言明となります。次のパターンを見てみましょう。 - このパターンにも意味のないパターンを挿入し、2つの選択肢を2行 - 目に置いています。 + 最初の部分は、オプションの左括弧にマッチし、その文字がある場 + 合に、最初の部分文字列として設定します。第2の部分は、括弧以外 + の一つ以上の文字にマッチします。第3の部分は、最初の括弧にマッ + チしたかどうかを調べる条件付きサブパターンです。マッチしている + 場合、つまり、対象が左括弧で始まっている場合、条件は&true;と + なり、yes-pattern が実行され、右括弧が必要となります。 + そうでない場合、no-pattern が存在しないため、サブパターンは + 何にもマッチしません。言いかえると、このパターンは、括弧なし + の並びにマッチし、オプションで括弧で囲まれた並びにマッチします。 + + 条件が数字の並びの場合、言明となります。肯定あるいは否定の + 前方または後方言明となります。次のパターンを見てみましょう。 + このパターンにも意味のないパターンを挿入し、2つの選択肢を2行 + 目に置いています。 (?(?=[^a-z]*[a-z]) \d{2}-[a-z]{3}-\d{2} | \d{2}-\d{2}-\d{2} ) - 条件は、肯定後方言明であり、英字以外の文字の並びかその後に - 英字が続くものにマッチします。言いかえると、対象文字列に少な - くとも文字が一つあるかどうかを調べます。文字がみつかると、 - 検索対象は最初の選択肢に対してマッチします。みつからない場合 - は、2番目にマッチします。このパターンは、2つの形式 dd-aaa-dd - または dd-dd-dd のどちらかの文字列にマッチします。ただし、 - aaa は英字、dd は数字です。 - + 条件は、肯定後方言明であり、英字以外の文字の並びかその後に + 英字が続くものにマッチします。言いかえると、対象文字列に少な + くとも文字が一つあるかどうかを調べます。文字がみつかると、 + 検索対象は最初の選択肢に対してマッチします。みつからない場合 + は、2番目にマッチします。このパターンは、2つの形式 dd-aaa-dd + または dd-dd-dd のどちらかの文字列にマッチします。ただし、 + aaa は英字、dd は数字です。 </literallayout> </refsect2> <refsect2 id="regexp.reference.comments"> <title>コメント</title> <literallayout> - (?# という並びは、開始を指定します。コメントは、次の右括弧まで - 続きます。括弧のネストは許可されません。コメント中の文字は、 - パターンマッチングには全く関係しません。 - - PCRE_EXTENDED オプションが設定されている場合、文字クラスの外 - にあるエスケープされていない # 文字は、コメントを指定します。 - コメントは、パターン中の次の改行文字まで続きます。 - + (?# という並びは、開始を指定します。コメントは、次の右括弧まで + 続きます。括弧のネストは許可されません。コメント中の文字は、 + パターンマッチングには全く関係しません。 + + PCRE_EXTENDED オプションが設定されている場合、文字クラスの外 + にあるエスケープされていない # 文字は、コメントを指定します。 + コメントは、パターン中の次の改行文字まで続きます。 </literallayout> </refsect2> <refsect2 id="regexp.reference.recursive"> <title>再帰的パターン</title> <literallayout> - 無制限のネストを許容する括弧を含む文字列にマッチを行う問題を考え - てみましょう。再帰を使用しない場合、実現可能な最良の方法は、何ら - かの固定した深さのネストまでマッチを行うパターンを使用することで - す。これでは、任意の深さのネストを処理することはできません。Perl - 5.6では、(他の機能と共に)正規表現で再帰を行うことを可能にする実験 - 的な機能がサポートされています。専用のシーケンス (?R)が再帰を指定 - するためにサポートされています。このPCREパターンによりこの括弧の - 問題は次のように解決されます。(空白を無視するためにPCRE_EXTENDED - オプションが設定されていると仮定します) + 無制限のネストを許容する括弧を含む文字列にマッチを行う問題を考え + てみましょう。再帰を使用しない場合、実現可能な最良の方法は、何ら + かの固定した深さのネストまでマッチを行うパターンを使用することで + す。これでは、任意の深さのネストを処理することはできません。Perl + 5.6では、(他の機能と共に)正規表現で再帰を行うことを可能にする実験 + 的な機能がサポートされています。専用のシーケンス (?R)が再帰を指定 + するためにサポートされています。このPCREパターンによりこの括弧の + 問題は次のように解決されます。(空白を無視するために<link + linkend="pcre.pattern.modifiers">PCRE_EXTENDED</link>オプション + が設定されていると仮定します) \( ( (?>[^()]+) | (?R) )* \) - まず、このパターンは開き括弧にマッチします。続いて、括弧以外の並 - びまたはパターン自体に再帰的にマッチする部分文字列に何回でもマッ - チします。最後に閉じ括弧にマッチします。 + まず、このパターンは開き括弧にマッチします。続いて、括弧以外の並 + びまたはパターン自体に再帰的にマッチする部分文字列に何回でもマッ + チします。最後に閉じ括弧にマッチします。 このパターン例には、ネストした無制限の反復が含まれており、このた め、マッチしない文字列のパターンを適用する際に括弧以外の文字列に @@ -1955,15 +2433,15 @@ 次のように括弧を追加すると、 \( ( ( (?>[^()]+) | (?R) )* ) \) - ^ ^ - ^ ^ 取得される文字列は、"ab(cd)ef" と - なり、最上位レベルの括弧の中身となります。一つのパターン内に - 15以上の取得用括弧がある場合、PCREは再帰の間のデータ保存用に - 追加のメモリを取得する必要があります。これは、pcre_malloc に - より確保され、後で pcre_free により開放されます。メモリが取 - 得できない場合、メモリ不足エラーを再帰の内側から出力する手段 - はないため、最初の15個の取得用括弧についてのみデータが保存さ - れます。 + + 取得される文字列は、"ab(cd)ef" と + なり、最上位レベルの括弧の中身となります。一つのパターン内に + 15以上の取得用括弧がある場合、PCREは再帰の間のデータ保存用に + 追加のメモリを取得する必要があります。これは、pcre_malloc に + より確保され、後で pcre_free により開放されます。メモリが取 + 得できない場合、メモリ不足エラーを再帰の内側から出力する手段 + はないため、最初の15個の取得用括弧についてのみデータが保存さ + れます。 </literallayout> </refsect2> @@ -1977,11 +2455,13 @@ 性能向上のために正規表現の最適化に関する多くの議論が 記述されています。 - パターンが .* で始まり、PCRE_DOTALL オプションが設定されている - 場合、対象文字列の始端でしかまっちできないため、パターンは - PCRE により暗黙のうちにアンカー付きとなります。 - しかし、PCRE_DOTALL が設定されていない場合、メタ文字 . が - 改行にマッチしないので、PCREはこの最適化を行えません。 + パターンが .* で始まり、<link + linkend="pcre.pattern.modifiers">PCRE_DOTALL</link>オプションが設 + 定されている場合、対象文字列の始端でしかまっちできないため、パター + ンはPCREにより暗黙のうちにアンカー付きとなります。 + しかし、<link linkend="pcre.pattern.modifiers">PCRE_DOTALL</link> + が設定されていない場合、メタ文字 . が改行にマッチしないので、PCRE + はこの最適化を行えません。 対象文字列が改行を含む場合、パターンは文字列の始端からではなく 各改行の直後の文字からマッチする可能性があります。例えば、 パターン @@ -1995,8 +2475,9 @@ 開始する必要があります。 このようなパターンを改行を含まない対象文字列に使用した場合、 - PCRE_DOTALL を設定するか、アンカー付きであることを陽に示すため - にパターンを ^.* で開始することにより最高の性能が得られます。 + <link linkend="pcre.pattern.modifiers">PCRE_DOTALL</link>を設定す + るか、アンカー付きであることを陽に示すためにパターンを ^.* で開始 + することにより最高の性能が得られます。 これにより、PCRE が対象文字列の改行を探し、そこで再スタート することを防止します。 @@ -2006,29 +2487,29 @@ (a+)* - これは、33通りの異なった方法で、"aaaa"にマッチします。この数は、 - 文字列が長くなるにつれて急激に増大します。(* 反復は、0、1、2、3、 - 4回マッチし、0以外の各々のケースで、+反復は異なった回数分マッチし - ます) パターンの残りにマッチ全体が失敗するようなパターンである場 - 合、PCREは基本的に全ての可能性がある選択肢を調べるため、非常に長 - い時間がかかります。 + これは、33通りの異なった方法で、"aaaa"にマッチします。この数は、 + 文字列が長くなるにつれて急激に増大します。(* 反復は、0、1、2、3、 + 4回マッチし、0以外の各々のケースで、+反復は異なった回数分マッチし + ます) パターンの残りにマッチ全体が失敗するようなパターンである場 + 合、PCREは基本的に全ての可能性がある選択肢を調べるため、非常に長 + い時間がかかります。 - 次のように文字リテラルが後にあるようなより簡単な場合には最適化が - 可能です。 + 次のように文字リテラルが後にあるようなより簡単な場合には最適化が + 可能です。 (a+)*b - 標準のマッチ手順に着手する前に、PCREは対象文字列の後の方に"b"があ - るかどうかを調べます。これがない場合には、直ちにマッチは失敗しま - す。しかし、リテラルが後にない場合には、この最適化を使用すること - はできません。以下のパターンと上のパターンの動作の差異を比較して - みましょう。 + 標準のマッチ手順に着手する前に、PCREは対象文字列の後の方に"b"があ + るかどうかを調べます。これがない場合には、直ちにマッチは失敗しま + す。しかし、リテラルが後にない場合には、この最適化を使用すること + はできません。以下のパターンと上のパターンの動作の差異を比較して + みましょう。 (a+)*\d - 前者は、全体が "a" 文字である行に適用された場合にほぼ瞬間的に失敗 - と判定します。一方、後者では、およそ20文字より長い文字列ではかな - りの時間がかかります。 + 前者は、全体が "a" 文字である行に適用された場合にほぼ瞬間的に失敗 + と判定します。一方、後者では、およそ20文字より長い文字列ではかな + りの時間がかかります。 </literallayout> </refsect2> </refsect1> Index: phpdoc/ja/functions/pdf.xml diff -u phpdoc/ja/functions/pdf.xml:1.29 phpdoc/ja/functions/pdf.xml:1.30 --- phpdoc/ja/functions/pdf.xml:1.29 Sun Jan 6 22:23:28 2002 +++ phpdoc/ja/functions/pdf.xml Sat Jan 26 10:38:34 2002 @@ -1,4 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> +<!-- $Revision: 1.30 $ --> <reference id="ref.pdf"> <title>pdf 関数</title> <titleabbrev>pdf</titleabbrev> Index: phpdoc/ja/functions/pfpro.xml diff -u phpdoc/ja/functions/pfpro.xml:1.7 phpdoc/ja/functions/pfpro.xml:1.8 --- phpdoc/ja/functions/pfpro.xml:1.7 Wed Dec 12 15:53:33 2001 +++ phpdoc/ja/functions/pfpro.xml Sat Jan 26 10:38:34 2002 @@ -1,4 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> +<!-- $Revision: 1.8 $ --> <reference id="ref.pfpro"> <title>Verisign Payflow Pro 関数</title> <titleabbrev>Verisign Payflow Pro</titleabbrev> @@ -110,7 +111,6 @@ <funcprototype> <funcdef>array <function>pfpro_process</function></funcdef> <paramdef>array <parameter>parameters</parameter></paramdef> - <paramdef>string <parameter> <replaceable><optional>address</optional></replaceable> @@ -193,7 +193,8 @@ <example> <title>Payflow Proの例</title> <programlisting role="php"> -&lt;?php +<![CDATA[ +<?php pfpro_init(); @@ -224,6 +225,7 @@ pfpro_cleanup(); ?> +]]> </programlisting> </example> </refsect1> @@ -302,11 +304,12 @@ <example> <title>Payflow Pro raw の例</title> <programlisting role="php"> -&lt;?php +<![CDATA[ +<?php pfpro_init(); -$response = pfpro_process("USER=mylogin&amp;PWD[5]=m&amp;ndy&amp;TRXTYPE=S&amp;TENDER=C&amp;AMT=1.50&amp;ACCT=4111111111111111&amp;EXPDATE=0904"); +$response = pfpro_process("USER=mylogin&PWD[5]=m&ndy&TRXTYPE=S&TENDER=C&AMT=1.50&ACCT=4111111111111111&EXPDATE=0904"); if (!$response) { die("Couldn't establish link to Verisign.\n"); @@ -317,11 +320,11 @@ pfpro_cleanup(); ?> +]]> </programlisting> </example> </refsect1> </refentry> - <refentry id="function.pfpro-version"> <refnamediv> Index: phpdoc/ja/functions/pgsql.xml diff -u phpdoc/ja/functions/pgsql.xml:1.31 phpdoc/ja/functions/pgsql.xml:1.32 --- phpdoc/ja/functions/pgsql.xml:1.31 Wed Dec 19 10:34:51 2001 +++ phpdoc/ja/functions/pgsql.xml Sat Jan 26 10:38:34 2002 @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<!-- $Revision: 1.31 $ --> +<!-- $Revision: 1.32 $ --> <reference id="ref.pgsql"> <title>PostgreSQL 関数</title> <titleabbrev>PostgreSQL</titleabbrev> @@ -20,6 +20,37 @@ 何回かのリリースでも使用可能ですが、将来的に削除される可能性があ ります。CVSバージョンには、新しい関数名が付けられています。 </para> + <example> + <title>関数名の変更</title> + <programlisting role="php"> +<![CDATA[ +OLD NAME NEW NAME +pg_exec pg_query +getlastoid pg_last_oid +pg_cmdtuples pg_affected_rows +pg_errormessage pg_last_error +pg_numrows pg_num_rows +pg_numfields pg_num_fields +pg_fieldname pg_field_name +pg_fieldsize pg_field_size +pg_fieldtype pg_field_type +pg_fieldnum pg_field_num +pg_fieldprtlen pg_field_prtlen +pg_fieldisnull pg_field_is_null +pg_freeresult pg_free_result +pg_result pg_fetch_result +pg_loreadall pg_lo_read_all +pg_locreate pg_lo_create +pg_lounlink pg_lo_unlink +pg_loopen pg_lo_open +pg_loclose pg_lo_close +pg_loread pg_lo_read +pg_lowrite pg_lo_write +pg_loimport pg_lo_import +pg_loexport pg_lo_export +]]> + </programlisting> + </example> <para> 従来のpg_connect()/pg_pconnect() は、将来的に同期接続機能をサポー トするために過去のものとなる可能性があります。 @@ -398,22 +429,40 @@ </funcprototype> </funcsynopsis> <para> - クエリーに失敗したり、connectionが有効な接続IDでない場合は&false;を - 返します。connectionが有効な値であれば、 + <function>pg_exec</function>は、クエリを実行できた場合、クエリ結 + 果リソースを返します。クエリーに失敗したり、connectionが有効な接 + 続IDでない場合は&false;を返します。connectionが有効な値であれば、 <function>pg_errormessage</function>関数によりエラーの詳細 を得ることができます。<function>pg_exec</function>関数は、接続IDにより 指定されたPostgreSQLデータベースに対してSQLステートメントを送信します。 - connectionは<function>pg_connect</function>により返された有効なID - でなければなりません。この関数の返り値はインデックス値であり、 - その他のPostgreSQL関数から結果をアクセスする際に使われます。 + connectionは<function>pg_connect</function>または + <function>pg_pconnect</function>により返された有効なIDでなければ + なりません。この関数の返り値はクエリ欠課リソースであり、 + <function>pg_fetch_array</function>のようなその他のPostgreSQL関数 + が結果にアクセスする際に使われます。 <note> <simpara> - PHP/FIでは、クエリーがデータを返すことが期待されない場合 - (たとえばINSERTやUPDATE)は1を返し、また何も返さなかったSELECTの - 場合でも1より大きな値を返します。PHPではそのような仮定は行いません。 + <parameter>connection</parameter>は、 + <function>pg_exec</function>のオプションのパラメータです。 + <parameter>connection</parameter>が使用された場合、デフォルトの + 接続が使用されます。デフォルトの接続は、 + <function>pg_connect</function>または + <function>pg_pconnect</function>により作成された直近の接続です。 + </simpara> + <simpara> + <parameter>connection</parameter>は省略できますが、スクリプトの + バグが発見しにくくなるため、省略は推奨されません。 </simpara> </note> </para> + <para> + <function>pg_connect</function>, + <function>pg_pconnect</function>, + <function>pg_fetch_array</function>, + <function>pg_fetch_object</function>, + <function>pg_numrows</function>, + and <function>pg_cmdtuples</function>も参照下さい。 + </para> </refsect1> </refentry> @@ -428,14 +477,17 @@ <funcprototype> <funcdef>array <function>pg_fetch_array</function></funcdef> <paramdef>resource <parameter>result</parameter></paramdef> - <paramdef>int <parameter>row</parameter></paramdef> + <paramdef>int + <parameter><optional>row</optional></parameter> + </paramdef> <paramdef>int <parameter><optional>result_type</optional></parameter> </paramdef> </funcprototype> </funcsynopsis> - <para> - 返り値: 取得された行を保持する配列、行がもうない場合は&false;。 + <para> + <function>pg_fetch_array</function>は、取得された行(タプル/レコー + ド)を保持する配列を返します。行がもうない場合は&false;を返します。 </para> <para> <function>pg_fetch_array</function>は拡張版の @@ -444,9 +496,18 @@ フィールド名をキーとしてデータを連想インデックスにも保存します。 </para> <para> - <function>pg_fetch_array</function>の - 3番目の引数(オプション)<parameter>result_type</parameter>は - 定数であり、PGSQL_ASSOC、PGSQL_NUM、PGSQL_BOTHのどれかとなります。 + <parameter>row</parameter>は、取得する行(レコード)番号です。最初 + の行は0です。 + </para> + <para> + <parameter>result_type</parameter>は、返り値の初期化方法を制御す + るオプションのパラメータです。<parameter>result_type</parameter> + は定数であり、次の値のどれかとすることが可能です。: PGSQL_ASSOC, + PGSQL_NUM, and PGSQL_BOTH。 + <function>pg_fetch_array</function>は、PGSQL_ASSOCのキーとしてフィー + ルド名がある連想配列を返します。PGSQL_NUMをキーとした場合はフィー + ルド添字、PGSQL_BOTHをキーとした場合はフィールド名/添字です。デフォ + ルトは、PGSQL_BOTHです。 <note> <para> <parameter>result_type</parameter>はPHP4.0で追加されました。 @@ -460,12 +521,15 @@ 極端に遅くなるわけではないということがあげられます。 </para> <para> - 更に詳細な情報は、<function>pg_fetch_row</function>を参照下さい。 + <function>pg_fetch_row</function>、 + <function>pg_fetch_object</function>、 + <function>pg_result</function>も参照下さい。 </para> - <example> - <title>PostgreSQLによる配列の取得</title> - <programlisting role="php"> - <![CDATA[ + <para> + <example> + <title>PostgreSQLによる配列の取得</title> + <programlisting role="php"> +<![CDATA[ <?php $conn = pg_pconnect ("dbname=publisher"); if (!$conn) { @@ -486,8 +550,14 @@ echo $arr["author"] . " <- array\n"; ?> ]]> - </programlisting> - </example> + </programlisting> + </example> + </para> + <note> + <para> + 4.1.0以降、<parameter>row</parameter>はオプションです。 + </para> + </note> </refsect1> </refentry> @@ -509,20 +579,28 @@ </funcprototype> </funcsynopsis> <para> - 返り値: 取得した行に対応するプロパティを有するオブジェクト。 - 行がもうない場合は&false;。 + <function>pg_fetch_object</function>は、取得した行に対応するプロ + パティを有するオブジェクトを返します。この関数は、行がもうない場 + 合またはエラーには&false;を返します。 </para> <para> - <function>pg_fetch_object</function>は<function>pg_fetch_array</function> - に似ていますが、配列の代わりにオブジェクトが返されという違いがあります。 - 間接的に、このことはデータがオフセットではなく - フィールド名によってのみアクセス可能であることを意味します。 - (数字はプロパティ名として使用できません。) + <function>pg_fetch_object</function>は + <function>pg_fetch_array</function>に似ていますが、配列の代わりに + オブジェクトが返されという違いがあります。間接的に、このことはデー + タがオフセットではなくフィールド名によってのみアクセス可能である + ことを意味します。(数字はプロパティ名として使用できません。) + </para> + <para> + <parameter>result_type</parameter>は、返り値の初期化方法を制御す + るオプションのパラメータです。<parameter>result_type</parameter> + は定数であり、次の値のどれかとすることが可能です。: PGSQL_ASSOC, + PGSQL_NUM, and PGSQL_BOTH。 + <function>pg_fetch_array</function>は、PGSQL_ASSOCのキーとしてフィー + ルド名がある連想配列を返します。PGSQL_NUMをキーとした場合はフィー + ルド添字、PGSQL_BOTHをキーとした場合はフィールド名/添字です。デフォ + ルトは、PGSQL_BOTHです。 </para> <para> - <function>pg_fetch_array</function>の3番目の引数(オプション) - <parameter>result_type</parameter>は定数であり、 - PGSQL_ASSOC、PGSQL_NUM、PGSQL_BOTHのどれかとなります。 <note> <para> <parameter>result_type</parameter>はPHP4.0で追加されました。 @@ -535,7 +613,8 @@ (違いはわずかです) </para> <para> - <function>pg_fetch_array</function>、<function>pg_fetch_row</function> + <function>pg_exec</function>, <function>pg_fetch_array</function>, + <function>pg_fetch_row</function>, <function>pg_result</function> も参照下さい。 <example> <title>Postgres によりオブジェクトを取得する</title> @@ -584,6 +663,11 @@ </programlisting> </example> </para> + <note> + <para> + 4.1.0以降、<parameter>row</parameter>はオプションです。 + </para> + </note> </refsect1> </refentry> @@ -601,15 +685,17 @@ <paramdef>int <parameter>row</parameter></paramdef> </funcprototype> </funcsynopsis> - <para> - 返り値: 取得された行を有する配列、行がもうない場合に&false;。 - </para> <para> <function>pg_fetch_row</function>は指定した結果IDが指す結果から - 1行分のデータを取得します。行は配列として返されます。 + 1行分のデータを取得します。行(レコード)は配列として返されます。 各結果カラムは、オフセット値0から始まる配列に保存されます。 </para> + <para> + 取得した行に対応する配列を返します。行がもうない場合、&false;を返 + します。 + </para> <para> + <function>pg_exec</function>, <function>pg_fetch_array</function>, <function>pg_fetch_object</function>, <function>pg_result</function> も参照下さい。 @@ -648,12 +734,17 @@ </programlisting> </example> </para> + <note> + <para> + 4.1.0以降、<parameter>row</parameter>はオプションとなりました。 + </para> + </note> </refsect1> </refentry> <refentry id="function.pg-fieldisnull"> <refnamediv> - <refname>pg_FieldIsNull</refname> + <refname>pg_fieldisnull</refname> <refpurpose>フィールドが&null;かどうか調べる</refpurpose> </refnamediv> <refsect1> @@ -667,9 +758,10 @@ </funcprototype> </funcsynopsis> <para> - フィールドが&null;かどうか調べます。rowで指定した行のフィールドが - &null;でない場合は0を返し、&null;だった場合は1を返します。fieldは番号 - またはフィールド名で指定します。rowの番号付けは0から始まります。 + <function>pg_fieldisnull</function>は、フィールドが&null;かどうか + 調べます。rowで指定した行のフィールドが&null;でない場合は0を返し、 + &null;だった場合は1を返します。fieldは番号またはフィールド名で指 + 定します。rowの番号付けは0から始まります。 </para> </refsect1> </refentry> @@ -689,9 +781,13 @@ </funcprototype> </funcsynopsis> <para> - <function>pg_fieldname</function>は、指定したPostgreSQL結果IDの中の - カラム番号に対応するフィールドの名前を返します。フィールド番号は - 0から始まります。 + <function>pg_fieldname</function>は、指定したPostgreSQL + <parameter>result</parameter>リソースの指定した + <parameter>field_number</parameter>にあるフィールドの名前を返 + します。フィールド番号は0から始まります。 + </para> + <para> + <function>pg_fieldnum</function>も参照下さい。 </para> </refsect1> </refentry> @@ -711,9 +807,14 @@ </funcprototype> </funcsynopsis> <para> - <function>pg_fieldnum</function>は、指定したPostgreSQLの結果IDの中の - フィールド名に対応するカラム番号を返します。フィールド番号は0から - 始まります。この関数は、エラーの場合に-1を返します。 + <function>pg_fieldnum</function>は、指定したPostgreSQL + <parameter>result</parameter>リソースの + <parameter>field_name</parameter>に対応するカラム(スロット)番号を + 返します。フィールド番号は0から始まります。この関数は、エラーの場 + 合に-1を返します。 + </para> + <para> + <function>pg_fieldname</function>も参照下さい。 </para> </refsect1> </refentry> @@ -734,10 +835,13 @@ </funcprototype> </funcsynopsis> <para> - <function>pg_fieldprtlen</function>は、PostgreSQLの結果の - 指定した値に関して実際に表示した場合の長さ(文字の数)を返します。 - 行番号(row_number)は0から始まります。この関数は、エラーの場合に-1を - 返します。 + <function>pg_fieldprtlen</function>は、PostgreSQLの + <parameter>result</parameter>の指定した値に関して実際に表示した場 + 合の長さ(文字の数)を返します。行番号(row_number)は0から始まります。 + この関数は、エラーの場合に-1を返します。 + </para> + <para> + <function>pg_fieldsize</function>も参照下さい。 </para> </refsect1> </refentry> @@ -765,6 +869,10 @@ フィールドサイズが-1の場合、その項目は可変長フィールドであることを 示します。この関数は、エラーの場合は&false;を返します。 </para> + <para> + <function>pg_fieldlen</function>および + <function>pg_fieldtype</function>も参照下さい。 + </para> </refsect1> </refentry> @@ -785,9 +893,14 @@ </funcprototype> </funcsynopsis> <para> - <function>pg_fieldtype</function>は、指定したPostgreSQLの結果において、 - 指定フィールドの型名を保持する文字列を返します。フィールド番号 - (field_number)は0から始まります。 + <function>pg_fieldtype</function>は、指定したPostgreSQLの + <parameter>result</parameter>リソースにおいて、指定した + <parameter>field_number</parameter>の型名を保持する文字列を返しま + す。フィールド番号(field_number)は0から始まります。 + </para> + <para> + <function>pg_fieldlen</function>および + <function>pg_fieldname</function>も参照下さい。 </para> </refsect1> </refentry> @@ -801,18 +914,22 @@ <title>説明</title> <funcsynopsis> <funcprototype> - <funcdef>int <function>pg_freeresult</function></funcdef> + <funcdef>bool <function>pg_freeresult</function></funcdef> <paramdef>resource <parameter>result</parameter></paramdef> </funcprototype> </funcsynopsis> <para> - <function>pg_freeresult</function>は、スクリプト実行中のメモリ使用量 + <function>pg_freeresult</function>は、スクリプト実行中のメモリ使用量 を抑制したい場合にのみコールする必要があります。すべての結果保持用 メモリは、スクリプトが終了する際に自動的に開放されます。 しかしながら、そのスクリプトにおいて、それ以上の結果データを - 必要としないことが確実であれば、結果ID(result_id)を引数として - <function>pg_freeresult</function>をコールすることが可能です。 - これにより、関連するメモリは開放されます。 + 必要としないことが確実であれば、<parameter>result</parameter>リソー + スを引数として<function>pg_freeresult</function>をコールし、関連 + するメモリを解放することが可能です。この関数は成功時にtrue、エラー + 発生時にfalseを返します。 + </para> + <para> + <function>pg_exec</function>も参照下さい。 </para> </refsect1> </refentry> @@ -833,10 +950,13 @@ <para> <function>pg_getlastoid</function>は、<function>pg_Exec</function>で 実行された直近のコマンドがSQLのINSERTだった場合、挿入されたタプルに割 - り当てられたoid(オブジェクト ID)を取り出します。有効なoidがあれば、 - この関数は正の整数を返します。エラーが起こったり、 - <function>pg_exec</function>で実行された最後のコマンドがSQLの - INSERTでなかった場合は-1を返します。 + り当てられた<varname>oid</varname>を取り出します。有効な + <varname>oid</varname>があれば、この関数は正の整数を返します。エ + ラーが起こったり、<function>pg_exec</function>で実行された最後の + コマンドがSQLのINSERTでなかった場合は-1を返します。 + </para> + <para> + <function>pg_exec</function>も参照下さい。 </para> </refsect1> </refentry> @@ -855,8 +975,13 @@ </funcprototype> </funcsynopsis> <para> - <function>pg_host</function>は、指定したPostgreSQL接続IDが接続している - ホストの名前を返します。 + <function>pg_host</function>は、指定したPostgreSQL + <parameter>connection</parameter>リソースが接続しているホストの名 + 前を返します。 + </para> + <para> + <function>pg_connect</function>および + <function>pg_pconnect</function>も参照下さい。 </para> </refsect1> </refentry> @@ -1672,7 +1797,7 @@ <refnamediv> <refname>pg_get_result</refname> <refpurpose> - Get asynchronous query result + 同期クエリ結果を取得する </refpurpose> </refnamediv> <refsect1> @@ -1680,53 +1805,47 @@ <funcsynopsis> <funcprototype> <funcdef>resource <function>pg_get_result</function></funcdef> - <paramdef>resource <parameter><optional>connection</optional></parameter></paramdef> + <paramdef>resource + <parameter><optional>connection</optional></parameter> + </paramdef> </funcprototype> </funcsynopsis> <para> - &warn.undocumented.func; + <function>pg_get_result</function>は、 + <function>pg_send_query</function>で実行した同期クエリから結果リ + ソースを取得します。<function>pg_send_query</function>は、複数の + クエリをPostgreSQLサーバに送信することが可能です。クエリ結果を1 + つずつ取得するには、<function>pg_get_result</function>が使用され + ます。この関数は結果リソースを返します。結果がもうない場合には、 + &false;を返します。 </para> </refsect1> </refentry> - <refentry id='function.pg-request-cancel'> + <refentry id='function.pg-result-status'> <refnamediv> - <refname>pg_request_cancel</refname> + <refname>pg_result_status</refname> <refpurpose> - Cancel request + クエリ結果のステータスを取得する </refpurpose> </refnamediv> <refsect1> <title>説明</title> <funcsynopsis> <funcprototype> - <funcdef>bool <function>pg_request_cancel</function></funcdef> - <paramdef>resource <parameter><optional>connection</optional></parameter></paramdef> + <funcdef>int <function>pg_result_status</function></funcdef> + <paramdef>resource <parameter>result</parameter></paramdef> </funcprototype> </funcsynopsis> <para> - &warn.undocumented.func; + <function>pg_result_status</function>は、結果リソースのステータス + を返します。返り値は、PGSQL_EMPTY_QUERY, + PGSQL_COMMAND_OK, PGSQL_TUPLES_OK, PGSQL_COPY_TO, + PGSQL_COPY_FROM, PGSQL_BAD_RESPONSE, PGSQL_NONFATAL_ERROR, + PGSQL_FATAL_ERRORのどれかとなります。 </para> - </refsect1> - </refentry> - - <refentry id='function.pg-is-busy'> - <refnamediv> - <refname>pg_is_busy</refname> - <refpurpose> - Get connection is busy or not - </refpurpose> - </refnamediv> - <refsect1> - <title>説明</title> - <funcsynopsis> - <funcprototype> - <funcdef>bool <function>pg_is_busy</function></funcdef> - <paramdef>resource <parameter><optional>connection</optional></parameter></paramdef> - </funcprototype> - </funcsynopsis> <para> - &warn.undocumented.func; + <function>pgsql_connection_status</function>も参照下さい。 </para> </refsect1> </refentry> @@ -1744,15 +1863,35 @@ <funcprototype> <funcdef>bool <function>pg_send_query</function></funcdef> <paramdef>resource <parameter>connection</parameter></paramdef> - <paramdef>string <parameter>qeury</parameter></paramdef> + <paramdef>string <parameter>query</parameter></paramdef> </funcprototype> <funcprototype> <funcdef>bool <function>pg_send_query</function></funcdef> - <paramdef>string <parameter>qeury</parameter></paramdef> + <paramdef>string <parameter>query</parameter></paramdef> </funcprototype> </funcsynopsis> <para> - &warn.undocumented.func; + <function>pg_send_query</function> send asynchronous query to the + <parameter>connection</parameter>. Unlike + <function>pg_query</function>, it can send multiple query to + PostgreSQL and get the result one by one using + <function>pg_get_result</function>. Script execution is not block + while query is executing. Use + <function>pg_connection_busy</function> to check connection is + busy (i.e. query is executing) Query may be canceled by calling + <function>pg_cancel_query</function>. + </para> + <para> + Although, user can send multiple query at once. User cannot send + multiple query over busy connection. If query is sent while + connection is busy, it waits until last query is finished and + discards all result. + </para> + <para> + See also <function>pg_query</function>, + <function>pg_cancel_query</function>, + <function>pg_get_result</function> and + <function>pg_connection_busy</function> </para> </refsect1> </refentry> @@ -1761,7 +1900,7 @@ <refnamediv> <refname>pg_cancel_query</refname> <refpurpose> - リクエストをキャンセルする + 同期クエリを取り消す </refpurpose> </refnamediv> <refsect1> @@ -1773,7 +1912,14 @@ </funcprototype> </funcsynopsis> <para> - &warn.undocumented.func; + <function>pg_cancel_query</function> cancel asynchronous query sent by + <function>pg_send_query</function>. You cannot cancel query executed by + <function>pg_query</function>. + </para> + <para> + See also <function>pg_send_query</function>, + <function>pg_cancel_result</function> and + <function>pg_connection_busy</function> </para> </refsect1> </refentry> @@ -1782,7 +1928,7 @@ <refnamediv> <refname>pg_connection_busy</refname> <refpurpose> - 接続がビジーかどうかを調べる + 接続がビジーかどうか調べる </refpurpose> </refnamediv> <refsect1> @@ -1794,7 +1940,15 @@ </funcprototype> </funcsynopsis> <para> - &warn.undocumented.func; + <function>pg_connection_busy</function> returns &true; if + connection busy. If connection is busy, previously sent query to + PostgreSQL server is still executing. If + <function>pg_get_result</function> is called, + <function>pg_get_result</function> will block. + </para> + <para> + See also <function>pg_connection_status</function> and + <function>pg_get_result</function> </para> </refsect1> </refentry> @@ -1815,7 +1969,15 @@ </funcprototype> </funcsynopsis> <para> - &warn.undocumented.func; + <function>pg_connection_reset</function> reset connection with + the same parameter when connection is made. It is useful for + error recovery. It returns &true; if it resets connection + successfully, otherwise returns &false;. + </para> + <para> + See also <function>pg_connect</function>, + <function>pg_pconnect</function> and + <function>pg_connection_status</function> </para> </refsect1> </refentry> @@ -1832,11 +1994,16 @@ <funcsynopsis> <funcprototype> <funcdef>int <function>pg_connection_status</function></funcdef> - <paramdef>resource <parameter>connnection</parameter></paramdef> + <paramdef>resource <parameter>connection</parameter></paramdef> </funcprototype> </funcsynopsis> <para> - &warn.undocumented.func; + <function>pg_connection_status</function> returns a connection + status. Possible status is <literal>PGSQL_CONNECTION_O</literal> + or <literal>PGSQL_CONNECTION_BAD</literal>. + </para> + <para> + See also <function>pg_connection_busy</function> </para> </refsect1> </refentry> @@ -1845,7 +2012,7 @@ <refnamediv> <refname>pg_copy_from</refname> <refpurpose> - No description given yet + 配列からテーブルをコピーする </refpurpose> </refnamediv> <refsect1> @@ -1861,7 +2028,11 @@ </funcprototype> </funcsynopsis> <para> - &warn.undocumented.func; + <function>pg_copy_from</function> copy table from array. It + return &true; for success, otherwise &false;. + </para> + <para> + See also <function>pg_copy_to</function> </para> </refsect1> </refentry> @@ -1870,7 +2041,7 @@ <refnamediv> <refname>pg_copy_to</refname> <refpurpose> - Send null-terminated string to backend server + 配列にテーブルをコピーする </refpurpose> </refnamediv> <refsect1> @@ -1885,7 +2056,12 @@ </funcprototype> </funcsynopsis> <para> - &warn.undocumented.func; + <function>pg_copy_to</function> copy table to array. The result + array is returned if it success to copy. Otherwise it returns + &false;. + </para> + <para> + See also <function>pg_copy_from</function> </para> </refsect1> </refentry> @@ -1894,7 +2070,7 @@ <refnamediv> <refname>pg_escape_bytea</refname> <refpurpose> - Escape binary for bytea type + bytea型にバイナリをエスケープする </refpurpose> </refnamediv> <refsect1> @@ -1906,7 +2082,16 @@ </funcprototype> </funcsynopsis> <para> - &warn.undocumented.func; + <function>pg_escape_string</function>は、byteaデータ型用に文字列 + をエスケープします。この関数はエスケープされた文字列を返します。 + </para> + <note> + <para> + この関数は、PostgreSQL 7.2以降を必要とします。 + </para> + </note> + <para> + <function>pg_escape_string</function>も参照下さい。 </para> </refsect1> </refentry> @@ -1915,7 +2100,7 @@ <refnamediv> <refname>pg_escape_string</refname> <refpurpose> - Escape string for text/char type + テキスト/文字型用の文字列をエスケープする </refpurpose> </refnamediv> <refsect1> @@ -1927,28 +2112,16 @@ </funcprototype> </funcsynopsis> <para> - &warn.undocumented.func; + <function>pg_escape_string</function> escapes string for + text/char datatype. It returns escaped string. </para> - </refsect1> - </refentry> - - <refentry id='function.pg-lo-close'> - <refnamediv> - <refname>pg_lo_close</refname> - <refpurpose> - Close a large object - </refpurpose> - </refnamediv> - <refsect1> - <title>説明</title> - <funcsynopsis> - <funcprototype> - <funcdef>bool <function>pg_lo_close</function></funcdef> - <paramdef>resource <parameter>large_object</parameter></paramdef> - </funcprototype> - </funcsynopsis> + <note> + <para> + This function is requires PostgreSQL 7.2 or later. + </para> + </note> <para> - &warn.undocumented.func; + See also <function>pg_escape_bytea</function> </para> </refsect1> </refentry> @@ -1957,7 +2130,7 @@ <refnamediv> <refname>pg_lo_seek</refname> <refpurpose> - Seeks position of large object + ラージオブジェクトの位置をシークする </refpurpose> </refnamediv> <refsect1> @@ -1971,7 +2144,12 @@ </funcprototype> </funcsynopsis> <para> - &warn.undocumented.func; + <function>pg_lo_seek</function> seeks position of large object + resource. <parameter>whence</parameter> is PGSQL_SEEK_SET, + PGSQL_SEEK_CUR or PGSQL_SEEK_END. + </para> + <para> + See also <function>pg_lo_tell</function>. </para> </refsect1> </refentry> @@ -1980,7 +2158,7 @@ <refnamediv> <refname>pg_lo_tell</refname> <refpurpose> - Returns current position of large object + ラージオブジェクトのカレントの位置を返す </refpurpose> </refnamediv> <refsect1> @@ -1992,7 +2170,11 @@ </funcprototype> </funcsynopsis> <para> - &warn.undocumented.func; + <function>pg_lo_tell</function> returns current position (offset + from the beginning of large object). + </para> + <para> + See also <function>pg_lo_seek</function>. </para> </refsect1> </refentry> @@ -2001,7 +2183,7 @@ <refnamediv> <refname>pg_result_error</refname> <refpurpose> - Get error message associated with result + 結果に関連するエラーメッセージを取得する </refpurpose> </refnamediv> <refsect1> @@ -2013,29 +2195,18 @@ </funcprototype> </funcsynopsis> <para> - &warn.undocumented.func; + <function>pg_result_error</function> returns error message + associated with <parameter>result</parameter> resource. Therefore, + user has better chance to get better error message than + <function>pg_last_error</function>. </para> - </refsect1> - </refentry> - - <refentry id='function.pg-result-status'> - <refnamediv> - <refname>pg_result_status</refname> - <refpurpose> - Get status of query result - </refpurpose> - </refnamediv> - <refsect1> - <title>説明</title> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>pg_result_status</function></funcdef> - <paramdef>resource <parameter>result</parameter></paramdef> - </funcprototype> - </funcsynopsis> <para> - &warn.undocumented.func; - </para> + See also <function>pg_query</function>, + <function>pg_send_query</function>, + <function>pg_get_result</function>, + <function>pg_last_error</function> and + <function>pg_last_notice</function> + </para> </refsect1> </refentry> Index: phpdoc/ja/functions/posix.xml diff -u phpdoc/ja/functions/posix.xml:1.10 phpdoc/ja/functions/posix.xml:1.11 --- phpdoc/ja/functions/posix.xml:1.10 Wed Dec 12 15:53:34 2001 +++ phpdoc/ja/functions/posix.xml Sat Jan 26 10:38:34 2002 @@ -1,4 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> +<!-- $Revision: 1.11 $ --> <reference id="ref.posix"> <title>POSIX 関数</title> <titleabbrev>POSIX</titleabbrev> @@ -243,7 +244,7 @@ <funcsynopsis> <funcprototype> <funcdef>array <function>posix_getgroups</function></funcdef> - <paramdef>void <parameter></parameter></paramdef> + <void/> </funcprototype> </funcsynopsis> <para> Index: phpdoc/ja/functions/printer.xml diff -u phpdoc/ja/functions/printer.xml:1.5 phpdoc/ja/functions/printer.xml:1.6 --- phpdoc/ja/functions/printer.xml:1.5 Wed Dec 12 15:53:35 2001 +++ phpdoc/ja/functions/printer.xml Sat Jan 26 10:38:34 2002 @@ -1,4 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> +<!-- $Revision: 1.6 $ --> <reference id="ref.printer"> <title>プリンタ関数</title> <titleabbrev>プリンタ</titleabbrev> @@ -41,8 +42,10 @@ <example> <title><function>printer_open</function> の例</title> <programlisting role="php"> +<![CDATA[ $handle = printer_open("HP Deskjet 930c"); $handle = printer_open(); +]]> </programlisting> </example> </refsect1> @@ -65,14 +68,17 @@ この関数は、プリンタのスプールファイルを削除します。 </para> <para> - <parameter>handle</parameter> には、プリンタへの有効なハンドルを指定する必要があります。 + <parameter>handle</parameter> には、プリンタへの有効なハンドルを + 指定する必要があります。 </para> <example> <title><function>printer_abort</function> の例</title> <programlisting role="php"> +<![CDATA[ $handle = printer_open(); printer_abort($handle); printer_close($handle); +]]> </programlisting> </example> </refsect1> @@ -93,7 +99,8 @@ </funcsynopsis> <para> この関数は、プリンタへの接続をクローズします。 - <function>printer_close</function> は、アクティブなデバイスコンテキストへもクローズします。 + <function>printer_close</function> は、アクティブなデバイスコンテ + キストへもクローズします。 </para> <para> <parameter>handle</parameter> は、プリンタへの有効なハンドルである必要があります。 @@ -101,8 +108,10 @@ <example> <title><function>printer_close</function> の例</title> <programlisting role="php"> +<![CDATA[ $handle = printer_open(); printer_close($handle); +]]> </programlisting> </example> </refsect1> @@ -123,17 +132,21 @@ </funcprototype> </funcsynopsis> <para> - <parameter>content</parameter> を直接プリンタに書き込み、成功時に&true;、失敗した場合に&false;を返します。 + <parameter>content</parameter> を直接プリンタに書き込み、成功時に + &true;、失敗した場合に&false;を返します。 </para> <para> - <parameter>handle</parameter> は、プリンタへの有効なハンドルである必要があります。 + <parameter>handle</parameter> は、プリンタへの有効なハンドルであ + る必要があります。 </para> <example> <title><function>printer_write</function> の例</title> <programlisting role="php"> +<![CDATA[ $handle = printer_open(); printer_write($handle, "Text to print"); printer_close($handle); +]]> </programlisting> </example> </refsect1> @@ -161,7 +174,9 @@ <para> この関数は、利用可能なプリンタとその機能を調べます。 <parameter>level</parameter>には、情報要求のレベルを設定します。 - これは、1,2,4 または 5とすることが可能です、<parameter>enumtype</parameter> は次の定義済みの定数のどれかとする必要があります。 + これは、1,2,4 または 5とすることが可能です、 + <parameter>enumtype</parameter> は次の定義済みの定数のどれかとす + る必要があります。 <itemizedlist> <listitem> <simpara> @@ -172,13 +187,16 @@ <listitem> <simpara> <parameter>PRINTER_ENUM_NAME</parameter>: - <parameter>name</parameter>のサーバ、ドメインまたはプリントプロバイダになることができるものを数えます。 + <parameter>name</parameter>のサーバ、ドメインまたはプリントプ + ロバイダになることができるものを数えます。 </simpara> </listitem> <listitem> <simpara> <parameter>PRINTER_ENUM_SHARED</parameter>: - このパラメータは単独では使用できず、他のパラメータ、共有プリンタを検出するためのPRINTER_ENUM_LOCAL、とともに使用する必要があります。 + このパラメータは単独では使用できず、他のパラメータ、共有プリン + タを検出するためのPRINTER_ENUM_LOCAL、とともに使用する必要があ + ります。 </simpara> </listitem> <listitem> @@ -203,7 +221,8 @@ <listitem> <simpara> <parameter>PRINTER_ENUM_REMOTE</parameter>: - (WinNT/2000 のみ) コンピュータのドメインにあるネットワークプリンタとプリンタサーバを数えます。 + (WinNT/2000 のみ) コンピュータのドメインにあるネットワークプリ + ンタとプリンタサーバを数えます。 <parameter>level</parameter> が 1の場合のみ有効です。 </simpara> </listitem> @@ -212,8 +231,10 @@ <example> <title><function>printer_list</function> の例</title> <programlisting role="php"> +<![CDATA[ /* ローカルな共有プリンタを検出 */ var_dump( printer_list(PRINTER_ENUM_LOCAL | PRINTER_ENUM_SHARED) ); +]]> </programlisting> </example> </refsect1> @@ -440,10 +461,12 @@ <example> <title><function>printer_set_option</function> example</title> <programlisting role="php"> +<![CDATA[ $handle = printer_open(); printer_set_option($handle, PRINTER_SCALE, 75); printer_set_option($handle, PRINTER_TEXT_ALIGN, PRINTER_TA_LEFT); printer_close($handle); +]]> </programlisting> </example> </refsect1> @@ -486,9 +509,11 @@ <example> <title><function>printer_get_option</function> example</title> <programlisting role="php"> +<![CDATA[ $handle = printer_open(); print printer_get_option($handle, PRINTER_DRIVERVERSION); printer_close($handle); +]]> </programlisting> </example> </refsect1> @@ -516,6 +541,7 @@ <example> <title><function>printer_create_dc</function> example</title> <programlisting role="php"> +<![CDATA[ $handle = printer_open(); printer_start_doc($handle); printer_start_page($handle); @@ -537,6 +563,7 @@ printer_endpage($handle); printer_end_doc($handle); printer_close($handle); +]]> </programlisting> </example> </refsect1> @@ -590,6 +617,7 @@ <example> <title><function>printer_start_doc</function> example</title> <programlisting role="php"> +<![CDATA[ $handle = printer_open(); printer_start_doc($handle, "My Document"); printer_start_page($handle); @@ -597,6 +625,7 @@ printer_end_page($handle); printer_end_doc($handle); printer_close($handle); +]]> </programlisting> </example> </refsect1> @@ -790,6 +819,7 @@ <function>printer_select_pen</function> example </title> <programlisting role="php"> +<![CDATA[ $handle = printer_open(); printer_start_doc($handle, "My Document"); printer_start_page($handle); @@ -804,6 +834,7 @@ printer_end_page($handle); printer_end_doc($handle); printer_close($handle); +]]> </programlisting> </example> </refsect1> @@ -938,6 +969,7 @@ <function>printer_select_brush</function> example </title> <programlisting role="php"> +<![CDATA[ $handle = printer_open(); printer_start_doc($handle, "My Document"); printer_start_page($handle); @@ -962,6 +994,7 @@ printer_end_page($handle); printer_end_doc($handle); printer_close($handle); +]]> </programlisting> </example> </refsect1> @@ -1115,6 +1148,7 @@ <function>printer_select_font</function> example </title> <programlisting role="php"> +<![CDATA[ $handle = printer_open(); printer_start_doc($handle, "My Document"); printer_start_page($handle); @@ -1127,6 +1161,7 @@ printer_end_page($handle); printer_end_doc($handle); printer_close($handle); +]]> </programlisting> </example> </refsect1> @@ -1157,9 +1192,11 @@ <function>printer_logical_fontheight</function> example </title> <programlisting role="php"> +<![CDATA[ $handle = printer_open(); print printer_logical_fontheight($handle, 72); printer_close($handle); +]]> </programlisting> </example> </refsect1> @@ -1213,6 +1250,7 @@ <title> <function>printer_draw_roundrect</function> example</title> <programlisting role="php"> +<![CDATA[ $handle = printer_open(); printer_start_doc($handle, "My Document"); printer_start_page($handle); @@ -1231,6 +1269,7 @@ printer_end_page($handle); printer_end_doc($handle); printer_close($handle); +]]> </programlisting> </example> </refsect1> @@ -1277,6 +1316,7 @@ <function>printer_draw_rectangle</function> example </title> <programlisting role="php"> +<![CDATA[ $handle = printer_open(); printer_start_doc($handle, "My Document"); printer_start_page($handle); @@ -1295,6 +1335,7 @@ printer_end_page($handle); printer_end_doc($handle); printer_close($handle); +]]> </programlisting> </example> </refsect1> @@ -1339,6 +1380,7 @@ <function>printer_draw_elipse</function> example </title> <programlisting role="php"> +<![CDATA[ $handle = printer_open(); printer_start_doc($handle, "My Document"); printer_start_page($handle); @@ -1357,6 +1399,7 @@ printer_end_page($handle); printer_end_doc($handle); printer_close($handle); +]]> </programlisting> </example> </refsect1> @@ -1388,6 +1431,7 @@ <example> <title><function>printer_draw_text</function> example</title> <programlisting role="php"> +<![CDATA[ $handle = printer_open(); printer_start_doc($handle, "My Document"); printer_start_page($handle); @@ -1400,6 +1444,7 @@ printer_end_page($handle); printer_end_doc($handle); printer_close($handle); +]]> </programlisting> </example> </refsect1> @@ -1432,6 +1477,7 @@ <example> <title><function>printer_draw_line</function> example</title> <programlisting role="php"> +<![CDATA[ $handle = printer_open(); printer_start_doc($handle, "My Document"); printer_start_page($handle); @@ -1447,6 +1493,7 @@ printer_end_page($handle); printer_end_doc($handle); printer_close($handle); +]]> </programlisting> </example> </refsect1> @@ -1513,6 +1560,7 @@ <example> <title><function>printer_draw_chord</function> example</title> <programlisting role="php"> +<![CDATA[ $handle = printer_open(); printer_start_doc($handle, "My Document"); printer_start_page($handle); @@ -1531,6 +1579,7 @@ printer_end_page($handle); printer_end_doc($handle); printer_close($handle); +]]> </programlisting> </example> </refsect1> @@ -1596,6 +1645,7 @@ <example> <title><function>printer_draw_chord</function> example</title> <programlisting role="php"> +<![CDATA[ $handle = printer_open(); printer_start_doc($handle, "My Document"); printer_start_page($handle); @@ -1614,6 +1664,7 @@ printer_end_page($handle); printer_end_doc($handle); printer_close($handle); +]]> </programlisting> </example> </refsect1> @@ -1637,7 +1688,10 @@ </funcprototype> </funcsynopsis> <para> - この関数は、ビットマップ<parameter>filename</parameter>を座標<parameter>x</parameter>, <parameter>y</parameter>に描画します。<parameter>handle</parameter>はプリンタへの有効なハンドルである必要があります。 + この関数は、ビットマップ<parameter>filename</parameter>を座標 + <parameter>x</parameter>, <parameter>y</parameter>に描画します。 + <parameter>handle</parameter>はプリンタへの有効なハンドルである必 + 要があります。 </para> <para> この関数は成功時に&true;、それ以外の場合に&false;を返します。 @@ -1645,6 +1699,7 @@ <example> <title><function>printer_draw_bmp</function> の例</title> <programlisting role="php"> +<![CDATA[ $handle = printer_open(); printer_start_doc($handle, "My Document"); printer_start_page($handle); @@ -1654,6 +1709,7 @@ printer_end_page($handle); printer_end_doc($handle); printer_close($handle); +]]> </programlisting> </example> </refsect1> Index: phpdoc/ja/functions/pspell.xml diff -u phpdoc/ja/functions/pspell.xml:1.12 phpdoc/ja/functions/pspell.xml:1.13 --- phpdoc/ja/functions/pspell.xml:1.12 Wed Dec 12 15:53:36 2001 +++ phpdoc/ja/functions/pspell.xml Sat Jan 26 10:38:34 2002 @@ -1,4 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> +<!-- $Revision: 1.13 $ --> + +<!-- pspell currently (2001-08-14) doesn't use resources --> <reference id="ref.pspell"> <title>Pspell関数</title> <titleabbrev>Pspell</titleabbrev> @@ -45,12 +48,14 @@ <example> <title><function>pspell_add_to_personal</function></title> <programlisting role="php"> +<![CDATA[ $pspell_config = pspell_config_create ("en"); pspell_config_personal ($pspell_config, "/var/dictionaries/custom.pws"); $pspell_link = pspell_new_config ($pspell_config); pspell_add_to_personal ($pspell_link, "Vlad"); pspell_save_wordlist ($pspell_link); +]]> </programlisting> </example> </para> @@ -90,7 +95,7 @@ <title>説明</title> <funcsynopsis> <funcprototype> - <funcdef>boolean <function>pspell_check</function></funcdef> + <funcdef>bool <function>pspell_check</function></funcdef> <paramdef>int <parameter>dictionary_link</parameter></paramdef> <paramdef>string <parameter>word</parameter></paramdef> </funcprototype> @@ -103,6 +108,7 @@ <example> <title><function>pspell_check</function></title> <programlisting role="php"> +<![CDATA[ $pspell_link = pspell_new ("en"); if (pspell_check ($pspell_link, "testt")) { @@ -110,6 +116,7 @@ } else { echo "Sorry, wrong spelling"; } +]]> </programlisting> </example> </para> @@ -139,6 +146,7 @@ <example> <title><function>pspell_add_to_personal</function></title> <programlisting role="php"> +<![CDATA[ $pspell_config = pspell_config_create ("en"); pspell_config_personal ($pspell_config, "/var/dictionaries/custom.pws"); $pspell_link = pspell_new_config ($pspell_config); @@ -146,6 +154,7 @@ pspell_add_to_personal ($pspell_link, "Vlad"); pspell_clear_session ($pspell_link); pspell_save_wordlist ($pspell_link); //"Vlad" は保存されません。 +]]> </programlisting> </example> </para> @@ -242,10 +251,12 @@ <example> <title><function>pspell_config_create</function></title> <programlisting role="php"> +<![CDATA[ $pspell_config = pspell_config_create ("en"); pspell_config_personal ($pspell_config, "/var/dictionaries/custom.pws"); pspell_config_repl ($pspell_config, "/var/dictionaries/custom.repl"); $pspell_link = pspell_new_personal ($pspell_config, "en"); +]]> </programlisting> </example> </para> @@ -276,10 +287,12 @@ <example> <title><function>pspell_config_ignore</function></title> <programlisting role="php"> +<![CDATA[ $pspell_config = pspell_config_create ("en"); pspell_config_ignore($pspell_config, 5); $pspell_link = pspell_new_config($pspell_config); pspell_check($pspell_link, "abcd"); // エラーを生じません +]]> </programlisting> </example> </para> @@ -332,10 +345,12 @@ <example> <title><function>pspell_config_mode</function></title> <programlisting role="php"> +<![CDATA[ $pspell_config = pspell_config_create ("en"); pspell_config_mode($pspell_config, PSPELL_FAST); $pspell_link = pspell_new_config($pspell_config); pspell_check($pspell_link, "thecat"); +]]> </programlisting> </example> </para> @@ -373,10 +388,12 @@ <example> <title><function>pspell_config_personal</function></title> <programlisting role="php"> +<![CDATA[ $pspell_config = pspell_config_create ("en"); pspell_config_personal ($pspell_config, "/var/dictionaries/custom.pws"); $pspell_link = pspell_new_config ($pspell_config); pspell_check ($pspell_link, "thecat"); +]]> </programlisting> </example> </para> @@ -413,11 +430,13 @@ <example> <title><function>pspell_config_repl</function></title> <programlisting role="php"> +<![CDATA[ $pspell_config = pspell_config_create ("en"); pspell_config_personal ($pspell_config, "/var/dictionaries/custom.pws"); pspell_config_repl ($pspell_config, "/var/dictionaries/custom.repl"); $pspell_link = pspell_new_config ($pspell_config); pspell_check ($pspell_link, "thecat"); +]]> </programlisting> </example> </para> @@ -452,10 +471,12 @@ <example> <title><function>pspell_config_runtogether</function></title> <programlisting role="php"> +<![CDATA[ $pspell_config = pspell_config_create ("en"); pspell_config_runtogether ($pspell_config, true); $pspell_link = pspell_new_config ($pspell_config); pspell_check ($pspell_link, "thecat"); +]]> </programlisting> </example> </para> @@ -594,8 +615,10 @@ <example> <title><function>pspell_new</function></title> <programlisting role="php"> +<![CDATA[ $pspell_link = pspell_new ("en", "", "", "", (PSPELL_FAST | PSPELL_RUN_TOGETHER)); +]]> </programlisting> </example> </para> @@ -635,10 +658,12 @@ <example> <title><function>pspell_new_config</function></title> <programlisting role="php"> +<![CDATA[ $pspell_config = pspell_config_create ("en"); pspell_config_personal ($pspell_config, "/var/dictionaries/custom.pws"); pspell_config_repl ($pspell_config, "/var/dictionaries/custom.repl"); $pspell_link = pspell_new_personal ($pspell_config, "en"); +]]> </programlisting> </example> </para> @@ -762,8 +787,10 @@ <example> <title><function>pspell_new_personal</function></title> <programlisting role="php"> +<![CDATA[ $pspell_link = pspell_new_personal ("/var/dictionaries/custom.pws", "en", "", "", "", PSPELL_FAST|PSPELL_RUN_TOGETHER)); +]]> </programlisting> </example> </para> @@ -797,12 +824,14 @@ <example> <title><function>pspell_add_to_personal</function></title> <programlisting role="php"> +<![CDATA[ $pspell_config = pspell_config_create ("en"); pspell_config_personal ($pspell_config, "/tmp/dicts/newdict"); $pspell_link = pspell_new_config ($pspell_config); pspell_add_to_personal ($pspell_link, "Vlad"); pspell_save_wordlist ($pspell_link); +]]> </programlisting> </example> </para> @@ -842,6 +871,7 @@ <example> <title><function>pspell_store_replacement</function></title> <programlisting role="php"> +<![CDATA[ $pspell_config = pspell_config_create ("en"); pspell_config_personal ($pspell_config, "/var/dictionaries/custom.pws"); pspell_config_repl ($pspell_config, "/var/dictionaries/custom.repl"); @@ -849,6 +879,7 @@ pspell_store_replacement ($pspell_link, $misspelled, $correct); pspell_save_wordlist ($pspell_link); +]]> </programlisting> </example> </para> @@ -877,15 +908,17 @@ <example> <title><function>pspell_suggest</function></title> <programlisting role="php"> -$pspell_link = pspell_new ("english"); +<![CDATA[ +$pspell_link = pspell_new ("en"); -if (!pspell_check ($pspell_link, "testt")){ +if (!pspell_check ($pspell_link, "testt")) { $suggestions = pspell_suggest ($pspell_link, "testt"); - for ($i=0; $i &lt; count ($suggestions); $i++) { - echo "Possible spelling: " . $suggestions[$i] . "&lt;br>"; + foreach ($suggestions as $suggestion) { + echo "Possible spelling: $suggestion<br>"; } } +]]> </programlisting> </example> </para> Index: phpdoc/ja/functions/readline.xml diff -u phpdoc/ja/functions/readline.xml:1.7 phpdoc/ja/functions/readline.xml:1.8 --- phpdoc/ja/functions/readline.xml:1.7 Wed Dec 12 15:53:37 2001 +++ phpdoc/ja/functions/readline.xml Sat Jan 26 10:38:34 2002 @@ -1,4 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> +<!-- $Revision: 1.8 $ --> <reference id="ref.readline"> <title>GNU Readline</title> <titleabbrev>Readline</titleabbrev> @@ -47,10 +48,11 @@ <example> <title><function>readline</function></title> <programlisting role="php"> +<![CDATA[ // ユーザから3回コマンドを取得 -for ($i=0; $i &lt; 3; $i++) { - $line = readline("Command: "); - readline_add_history($line); +for ($i=0; $i < 3; $i++) { + $line = readline ("Command: "); + readline_add_history ($line); } // ヒストリをダンプ @@ -58,6 +60,7 @@ // 変数をダンプ print_r(readline_info()); +]]> </programlisting> </example> </refsect1> Index: phpdoc/ja/functions/recode.xml diff -u phpdoc/ja/functions/recode.xml:1.9 phpdoc/ja/functions/recode.xml:1.10 --- phpdoc/ja/functions/recode.xml:1.9 Wed Dec 12 15:53:37 2001 +++ phpdoc/ja/functions/recode.xml Sat Jan 26 10:38:34 2002 @@ -1,4 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> +<!-- $Revision: 1.10 $ --> <reference id="ref.recode"> <title>GNU Recode 関数</title> <titleabbrev>Recode</titleabbrev> @@ -47,7 +48,9 @@ <example> <title>基本的な <function>recode_string</function> の例:</title> <programlisting role="php"> -print recode_string (&quot;us..flat&quot;, &quot;The following character has a diacritical mark: &amp;aacute;&quot;); +<![CDATA[ +print recode_string ("us..flat", "The following character has a diacritical mark: &aacute;"); +]]> </programlisting> </example> </para> @@ -109,9 +112,11 @@ <example> <title>基本的な <function>recode_file</function> の例</title> <programlisting role="php"> +<![CDATA[ $input = fopen ('input.txt', 'r'); $output = fopen ('output.txt', 'w'); -recode_file (&quot;us..flat&quot;, $input, $output); +recode_file ("us..flat", $input, $output); +]]> </programlisting> </example> </para> Index: phpdoc/ja/functions/regex.xml diff -u phpdoc/ja/functions/regex.xml:1.14 phpdoc/ja/functions/regex.xml:1.15 --- phpdoc/ja/functions/regex.xml:1.14 Wed Dec 12 15:53:37 2001 +++ phpdoc/ja/functions/regex.xml Sat Jan 26 10:38:34 2002 @@ -1,49 +1,63 @@ <?xml version="1.0" encoding="utf-8"?> <reference id="ref.regex"> - <title>正規表現関数 (POSIX拡張サポート)</title> +<!-- $Revision: 1.15 $ --> + <title>正規表現(regex)関数 (POSIX拡張サポート)</title> <titleabbrev>Regexps</titleabbrev> <partintro> + <note> + <para> + PHPは、<link linkend="ref.pcre">PCRE関数</link>によりPerl互換の構 + 文を使用する正規表現式もサポートします。これらの関数は、貪欲でな + いマッチ、言明、条件付きサブパターン、そしてPOSIX拡張正規表現構文 + でサポートされていない他の複数の機能をサポートします。 + </para> + </note> + <warning> + <para> + これらの正規表現関数はバイナリセーフではありません。<link + linkend="ref.pcre">PCRE関数</link>はバイナリセーフです。 + </para> + </warning> <para> PHPにおいて正規表現は複雑な文字列操作に使用されます。 次の正規表現関数がサポートされます。 <itemizedlist> + <listitem> + <simpara><function>ereg</function></simpara> + </listitem> + <listitem> + <simpara><function>ereg_replace</function></simpara> + </listitem> <listitem> - <simpara><function>ereg</function></simpara> - </listitem> - <listitem> - <simpara><function>ereg_replace</function></simpara> - </listitem> - <listitem> - <simpara><function>eregi</function></simpara> - </listitem> - <listitem> - <simpara><function>eregi_replace</function></simpara> - </listitem> - <listitem> - <simpara><function>split</function></simpara> - </listitem> - <listitem> - <simpara><function>spliti</function></simpara> - </listitem> - </itemizedlist> + <simpara><function>eregi</function></simpara> + </listitem> + <listitem> + <simpara><function>eregi_replace</function></simpara> + </listitem> + <listitem> + <simpara><function>split</function></simpara> + </listitem> + <listitem> + <simpara><function>spliti</function></simpara> + </listitem> + </itemizedlist> これらの関数は、全て最初の引数に正規表現をとります。 PHPはPOSIX 1003.2で定義されたPOSIX拡張正規表現を使用します。 POSIX正規表現に関する詳細については、PHP配布ファイルのregexディレ クトリにあるregexのmanページを参照下さい。 このページはmanpageフォーマットであり、読むには <command>man /usr/local/src/regex/regex.7</command>のようにします。 - - <!-- Should add discussion of PCRE functions here. --></para> - + </para> <para> <example> <title>正規表現の例</title> <programlisting role="php"> -ereg (&quot;abc&quot;, $string); -/* &quot;abc&quot;が$stringのどこかにある場合にtrueを返す */ +<![CDATA[ +ereg ("abc", $string); +/* "abc"が$stringのどこかにある場合にtrueを返す */ -ereg (&quot;^abc&quot;, $string); +ereg ("^abc", $string); /* &quot;abc&quot; が$stringの最初にある場合にtrueを返す */ ereg ("abc$", $string); @@ -56,14 +70,15 @@ /* 空白で区切られた3つ単語を $regs[1], $regs[2],$regs[3]に代入する */ -$string = ereg_replace ("^", "&lt;BR&gt;", $string); +$string = ereg_replace ("^", "<br />", $string); /* &lt;BR&gt; タグを $string の先頭に挿入する */ -$string = ereg_replace ("$", "&lt;BR&gt;", $string); +$string = ereg_replace ("$", "<br />", $string); /* &lt;BR&gt; タグを $string の最後に挿入する */ $string = ereg_replace ("\n", "", $string); /* $stringの改行文字を全て取り除く */ +]]> </programlisting> </example> </para> @@ -101,14 +116,17 @@ といったようになっています。$regs[0]は <parameter>string</parameter>のコピーを保持しています。 </simpara> - <simpara> - <function>ereg</function>が何かに完全にマッチした場合、$regs には - ちょうど10個の要素が代入されます。これは、括弧で括られた部分文字 - 列のうち、実際にマッチしたものが 10 より少なくても多くても同様で - す。ただし、<function>ereg</function>にはより多くの部分文字列にマッ - チする能力があります。マッチするものが見付からなかった場合、$regs - は、<function>ereg</function>により書き換えられません。 - </simpara> + <note> + <simpara> + PHP 4.1.0より前のバージョンでは、<literal>$regs</literal>にはちょ + うど10個の要素が代入されました。これは、実際にマッチした括弧付き + のサブ文字列が10より多くても少なくても同じでした。ただし、 + <function>ereg</function>にはより多くの部分文字列にマッチする能 + 力があります。マッチするものが見付からなかった場合、 + <literal>$regs</literal>は、<function>ereg</function>により書き + 換えられません。 + </simpara> + </note> <simpara> 検索においては、大文字と小文字を区別します。 </simpara> @@ -123,17 +141,20 @@ <example> <title><function>ereg</function>の例</title> <programlisting role="php"> -if ( ereg ("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})", $date, $regs)) { +<![CDATA[ +if (ereg ("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})", $date, $regs)) { echo "$regs[3].$regs[2].$regs[1]"; } else { - echo "日付のフォーマットが不正です:$date"; + echo "Invalid date format: $date"; } +]]> </programlisting> </example> </para> <simpara> <function>eregi</function>,<function>ereg_replace</function>, - <function>eregi_replace</function>も参照下さい。 + <function>eregi_replace</function>,<function>preg_match</function> + も参照下さい。 </simpara> </refsect1> </refentry> @@ -153,6 +174,13 @@ <paramdef>string <parameter>string</parameter></paramdef> </funcprototype> </funcsynopsis> + <note> + <para> + Perl互換の正規表現構文を使用する + <function>preg_replace</function>は、しばしば + <function>ereg_replace</function>よりも速い代替関数です。 + </para> + </note> <simpara> この関数は、<parameter>string</parameter>をスキャンして <parameter>pattern</parameter>にマッチするものを探し、 @@ -183,10 +211,12 @@ <example> <title><function>ereg_replace</function>の例</title> <programlisting role="php"> +<![CDATA[ $string = "This is a test"; -echo ereg_replace ( " is", " was", $string ); -echo ereg_replace ( "( )is", "\\1was", $string ); -echo ereg_replace ( "(( )is)", "\\2was", $string ); +echo ereg_replace (" is", " was", $string); +echo ereg_replace ("( )is", "\\1was", $string); +echo ereg_replace ("(( )is)", "\\2was", $string); +]]> </programlisting> </example> </para> @@ -199,7 +229,8 @@ <example> <title><function>ereg_replace</function> の例</title> <programlisting> -&lt;?php +<![CDATA[ +<?php /* これは期待した通りに動作しません。 */ $num = 4; $string = "This string has four words."; @@ -212,17 +243,29 @@ $string = ereg_replace('four', $num, $string); echo $string; /* 出力: 'This string has 4 words.' */ ?> +]]> + </programlisting> + </example> + </para> + <para> + <example> + <title>URLをリンクで置換する</title> + <programlisting role="php"> +<![CDATA[ +$text = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]", + "<a href=\"\\0\">\\0</a>", $text); +]]> </programlisting> </example> </para> <simpara> <function>ereg</function>, <function>eregi</function>, - <function>eregi_replace</function>も参照下さい。 + <function>eregi_replace</function>, <function>str_replace</function>, + <function>preg_match</function>も参照下さい。 </simpara> </refsect1> </refentry> - <refentry id="function.eregi"> <refnamediv> <refname>eregi</refname> @@ -248,15 +291,24 @@ この関数は、アルファベット文字をマッチングさせる際に 大文字小文字の区別をしないこと以外は<function>ereg</function>と同 じです。 + <example> + <title><function>eregi</function>の例</title> + <programlisting role="php"> +<![CDATA[ +if (eregi("z", $string)) { + echo "'$string' contains a 'z' or 'Z'!"; +} +]]> + </programlisting> + </example> </para> <para> - <function>ereg</function>, <function>ereg_replace</function> - および<function>eregi_replace</function>も参照下さい。 + <function>ereg</function>, <function>ereg_replace</function>, + <function>eregi_replace</function>も参照下さい。 </para> </refsect1> </refentry> - <refentry id="function.eregi-replace"> <refnamediv> <refname>eregi_replace</refname> @@ -303,6 +355,13 @@ </paramdef> </funcprototype> </funcsynopsis> + <note> + <para> + Perl互換の正規表現構文を使用する<function>preg_split</function> + は、往々にして<function>split</function>よりも速い代替案となりま + す。 + </para> + </note> <para> 文字列の配列を返します。配列の各要素は正規表現 <parameter>pattern</parameter>により区切られた @@ -319,19 +378,33 @@ <example> <title><function>split</function>の例</title> <programlisting role="php"> -$passwd_list = split ( ":", $passwd_line, 5 ); +<![CDATA[ +list($user,$pass,$uid,$gid,$extra)= split (":", $passwd_line, 5); +]]> </programlisting> </example> </para> + <tip> + <simpara> + <parameter>pattern</parameter>が<replaceable>n</replaceable>回現 + れる場合、返される配列には、 + <literal><replaceable>n</replaceable>+1</literal>個のアイテムが + 含まれます。例えば、<parameter>pattern</parameter>が現れない場合、 + 1個の要素のみを有する配列が返されます。もちろん、これは + <parameter>string</parameter>が空の場合も同様です。 + </simpara> + </tip> <para> スラッシュ、ドット、ハイフンをデリミタとすると日付を処理する例を 以下に示します。 <example> <title><function>split</function>の例</title> <programlisting role="php"> +<![CDATA[ $date = "04/30/1973"; // デリミタはスラッシュ、ドット、ハイフンのどれかです。 list ($month, $day, $year) = split ('[/.-]', $date); -echo "Month: $month; Day: $day; Year: $year&lt;br&gt;\n"; +echo "Month: $month; Day: $day; Year: $year<br>\n"; +]]> </programlisting> </example> </para> @@ -361,9 +434,10 @@ <command>man /usr/local/src/regex/regex.7</command>のようにします。 </para> <para> - <function>preg_split</function>, - <function>spliti</function>,<function>explode</function>, - <function>implode</function>も参照下さい。 + <function>preg_split</function>, <function>spliti</function>, + <function>explode</function>, <function>implode</function>, + <function>chunk_split</function>, <function>wordwrap</function>も + 参照下さい。 </para> </refsect1> </refentry> @@ -425,7 +499,9 @@ <example> <title><function>sql_regcase</function>の例</title> <programlisting role="php"> +<![CDATA[ echo sql_regcase ("Foo bar"); +]]> </programlisting> </example> これは、<screen>[Ff][Oo][Oo] [Bb][Aa][Rr]</screen>と表示します。 @@ -437,7 +513,6 @@ </para> </refsect1> </refentry> - </reference> @@ -457,4 +532,7 @@ sgml-local-catalogs:nil sgml-local-ecat-files:nil End: +vim600: syn=xml fen fdm=syntax fdl=2 si +vim: et tw=78 syn=sgml +vi: ts=1 sw=1 -->
« previous php.doc (#969341636) next »