<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML ><HEAD ><TITLE >expect_expectl</TITLE ><META NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" TITLE="PHP 手册" HREF="index.html"><LINK REL="UP" TITLE="Expect Functions" HREF="ref.expect.html"><LINK REL="PREVIOUS" TITLE="Expect Functions" HREF="ref.expect.html"><LINK REL="NEXT" TITLE="expect_popen" HREF="function.expect-popen.html"><META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=UTF-8"></HEAD ><BODY CLASS="refentry" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#840084" ALINK="#0000FF" ><DIV CLASS="NAVHEADER" ><TABLE SUMMARY="Header navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TH COLSPAN="3" ALIGN="center" >PHP 手册</TH ></TR ><TR ><TD WIDTH="10%" ALIGN="left" VALIGN="bottom" ><A HREF="ref.expect.html" ACCESSKEY="P" >上一页</A ></TD ><TD WIDTH="80%" ALIGN="center" VALIGN="bottom" ></TD ><TD WIDTH="10%" ALIGN="right" VALIGN="bottom" ><A HREF="function.expect-popen.html" ACCESSKEY="N" >下一页</A ></TD ></TR ></TABLE ><HR ALIGN="LEFT" WIDTH="100%"></DIV ><H1 ><A NAME="function.expect-expectl" ></A >expect_expectl</H1 ><DIV CLASS="refnamediv" ><A NAME="AEN48726" ></A ><P > (no version information, might be only in CVS)</P >expect_expectl -- Waits until the output from a process matches one of the patterns, a specified time period has passed, or an EOF is seen </DIV ><DIV CLASS="refsect1" ><A NAME="AEN48729" ></A ><H2 >说明</H2 >mixed <B CLASS="methodname" >expect_expectl</B > ( resource expect, array cases, array &match )<BR ></BR ><P > Waits until the output from a process matches one of the patterns, a specified time period has passed, or an EOF is seen. </P ><P > If <CODE CLASS="parameter" >match</CODE > is provided, then it is filled with the result of search. The matched string can be found in <CODE CLASS="parameter" >match[0]</CODE >. The match substrings (according to the parentheses) in the original pattern can be found in <CODE CLASS="parameter" >match[1]</CODE >, <CODE CLASS="parameter" >match[2]</CODE >, and so on, up to <CODE CLASS="parameter" >match[9]</CODE > (the limitation of libexpect). </P ></DIV ><DIV CLASS="refsect1" ><A NAME="AEN48750" ></A ><H2 >参数</H2 ><P > <P ></P ><DIV CLASS="variablelist" ><DL ><DT ><CODE CLASS="parameter" >expect</CODE ></DT ><DD ><P > An Expect stream, previously opened with <A HREF="function.expect-popen.html" ><B CLASS="function" >expect_popen()</B ></A >. </P ></DD ><DT ><CODE CLASS="parameter" >cases</CODE ></DT ><DD ><P > An array of expect cases. Each expect case is an indexed array, as described in the following table: <DIV CLASS="table" ><A NAME="AEN48765" ></A ><P ><B >表 1. Expect Case Array</B ></P ><TABLE BORDER="1" CLASS="CALSTABLE" ><COL><COL><COL><COL><COL><THEAD ><TR ><TH >Index Key</TH ><TH >Value Type</TH ><TH >Description</TH ><TH >Is Mandatory</TH ><TH >Default Value</TH ></TR ></THEAD ><TBODY ><TR ><TD >0</TD ><TD >string</TD ><TD >pattern, that will be matched against the output from the stream</TD ><TD >yes</TD ><TD > </TD ></TR ><TR ><TD >1</TD ><TD >mixed</TD ><TD >value, that will be returned by this function, if the pattern matches</TD ><TD >yes</TD ><TD > </TD ></TR ><TR ><TD >2</TD ><TD >integer</TD ><TD > pattern type, one of: <A HREF="ref.expect.html#constants.expect.exp_glob" ><TT CLASS="constant" ><B >EXP_GLOB</B ></TT ></A >, <A HREF="ref.expect.html#constants.expect.exp_exact" ><TT CLASS="constant" ><B >EXP_EXACT</B ></TT ></A > or <A HREF="ref.expect.html#constants.expect.exp_regexp" ><TT CLASS="constant" ><B >EXP_REGEXP</B ></TT ></A > </TD ><TD >no</TD ><TD ><A HREF="ref.expect.html#constants.expect.exp_glob" ><TT CLASS="constant" ><B >EXP_GLOB</B ></TT ></A ></TD ></TR ></TBODY ></TABLE ></DIV > </P ></DD ></DL ></DIV > </P ></DIV ><DIV CLASS="refsect1" ><A NAME="AEN48802" ></A ><H2 >返回值</H2 ><P > Returns value associated with the pattern that was matched. </P ><P > On failure this function returns: <A HREF="ref.expect.html#constants.expect.exp_eof" ><TT CLASS="constant" ><B >EXP_EOF</B ></TT ></A >, <A HREF="ref.expect.html#constants.expect.exp_timeout" ><TT CLASS="constant" ><B >EXP_TIMEOUT</B ></TT ></A > or <A HREF="ref.expect.html#constants.expect.exp_fullbuffer" ><TT CLASS="constant" ><B >EXP_FULLBUFFER</B ></TT ></A > </P ></DIV ><DIV CLASS="refsect1" ><A NAME="AEN48812" ></A ><H2 >更新日志</H2 ><P > <DIV CLASS="informaltable" ><P ></P ><A NAME="AEN48815" ></A ><TABLE BORDER="1" CLASS="CALSTABLE" ><COL><COL><THEAD ><TR ><TH >版本</TH ><TH >说明</TH ></TR ></THEAD ><TBODY ><TR ><TD >0.2.1</TD ><TD > Prior to version 0.2.1, in <CODE CLASS="parameter" >match</CODE > parameter a match string was returned, not an array of match substrings. </TD ></TR ></TBODY ></TABLE ><P ></P ></DIV > </P ></DIV ><DIV CLASS="refsect1" ><A NAME="AEN48826" ></A ><H2 >范例</H2 ><P > <TABLE WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" CLASS="EXAMPLE" ><TR ><TD ><DIV CLASS="example" ><A NAME="AEN48829" ></A ><P ><B >例 1. <B CLASS="function" >expect_expectl()</B > example</B ></P ><TABLE BORDER="0" BGCOLOR="#E0E0E0" CELLPADDING="5" ><TR ><TD ><code><font color="#000000"> <font color="#0000BB"><?php<br /></font><font color="#FF8000">// Copies file from remote host:<br /></font><font color="#0000BB">ini_set </font><font color="#007700">(</font><font color="#DD0000">"expect.timeout"</font><font color="#007700">, </font><font color="#0000BB">30</font><font color="#007700">);<br /><br /></font><font color="#0000BB">$stream </font><font color="#007700">= </font><font color="#0000BB">fopen </font><font color="#007700">(</font><font color="#DD0000">"expect://scp user@remotehost:/var/log/messages /home/user/messages.txt"</font><font color="#007700">, </font><font color="#DD0000">"r"</font><font color="#007700">);<br /><br /></font><font color="#0000BB">$cases </font><font color="#007700">= array (<br /> array (</font><font color="#0000BB">0 </font><font color="#007700">=> </font><font color="#DD0000">"password:"</font><font color="#007700">, </font><font color="#0000BB">1 </font><font color="#007700">=> </font><font color="#0000BB">PASSWORD</font><font color="#007700">),<br /> array (</font><font color="#0000BB">0 </font><font color="#007700">=> </font><font color="#DD0000">"yes/no)?"</font><font color="#007700">, </font><font color="#0000BB">1 </font><font color="#007700">=> </font><font color="#0000BB">YESNO</font><font color="#007700">)<br />);<br /><br />while (</font><font color="#0000BB">true</font><font color="#007700">) {<br /> switch (</font><font color="#0000BB">expect_expectl </font><font color="#007700">(</font><font color="#0000BB">$stream</font><font color="#007700">, </font><font color="#0000BB">$cases</font><font color="#007700">))<br /> {<br /> case </font><font color="#0000BB">PASSWORD</font><font color="#007700">:<br /> </font><font color="#0000BB">fwrite </font><font color="#007700">(</font><font color="#0000BB">$stream</font><font color="#007700">, </font><font color="#DD0000">"password\n"</font><font color="#007700">);<br /> break;<br /><br /> case </font><font color="#0000BB">YESNO</font><font color="#007700">:<br /> </font><font color="#0000BB">fwrite </font><font color="#007700">(</font><font color="#0000BB">$stream</font><font color="#007700">, </font><font color="#DD0000">"yes\n"</font><font color="#007700">);<br /> break;<br /><br /> case </font><font color="#0000BB">EXP_TIMEOUT</font><font color="#007700">:<br /> case </font><font color="#0000BB">EXP_EOF</font><font color="#007700">:<br /> break </font><font color="#0000BB">2</font><font color="#007700">;<br /> <br /> default:<br /> die (</font><font color="#DD0000">"Error has occurred!\n"</font><font color="#007700">);<br /> }<br />}<br /><br /></font><font color="#0000BB">fclose </font><font color="#007700">(</font><font color="#0000BB">$stream</font><font color="#007700">);<br /></font><font color="#0000BB">?></font> </font> </code></TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE > </P ></DIV ><DIV CLASS="refsect1" ><A NAME="AEN48833" ></A ><H2 >参见</H2 ><P > <P ></P ><TABLE BORDER="0" ><TBODY ><TR ><TD ><A HREF="function.expect-popen.html" ><B CLASS="function" >expect_popen()</B ></A ></TD ></TR ></TBODY ></TABLE ><P ></P > </P ></DIV ><DIV CLASS="NAVFOOTER" ><HR ALIGN="LEFT" WIDTH="100%"><TABLE SUMMARY="Footer navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" ><A HREF="ref.expect.html" ACCESSKEY="P" >上一页</A ></TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="index.html" ACCESSKEY="H" >起始页</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" ><A HREF="function.expect-popen.html" ACCESSKEY="N" >下一页</A ></TD ></TR ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" >Expect Functions</TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="ref.expect.html" ACCESSKEY="U" >上一级</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" >expect_popen</TD ></TR ></TABLE ></DIV ></BODY ></HTML >