<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML ><HEAD ><TITLE >strtok</TITLE ><META NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" TITLE="PHP 手册" HREF="index.html"><LINK REL="UP" TITLE="String 字符串处理函数" HREF="ref.strings.html"><LINK REL="PREVIOUS" TITLE="strstr" HREF="function.strstr.html"><LINK REL="NEXT" TITLE="strtolower" HREF="function.strtolower.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="function.strstr.html" ACCESSKEY="P" >上一页</A ></TD ><TD WIDTH="80%" ALIGN="center" VALIGN="bottom" ></TD ><TD WIDTH="10%" ALIGN="right" VALIGN="bottom" ><A HREF="function.strtolower.html" ACCESSKEY="N" >下一页</A ></TD ></TR ></TABLE ><HR ALIGN="LEFT" WIDTH="100%"></DIV ><H1 ><A NAME="function.strtok" ></A >strtok</H1 ><DIV CLASS="refnamediv" ><A NAME="AEN228254" ></A ><P > (PHP 3, PHP 4, PHP 5)</P >strtok -- Tokenize string</DIV ><DIV CLASS="refsect1" ><A NAME="AEN228257" ></A ><H2 >Description</H2 >string <B CLASS="methodname" >strtok</B > ( string str, string token )<BR ></BR ><P > <B CLASS="function" >strtok()</B > splits a string (<CODE CLASS="parameter" >str</CODE >) into smaller strings (tokens), with each token being delimited by any character from <CODE CLASS="parameter" >token</CODE >. That is, if you have a string like "This is an example string" you could tokenize this string into its individual words by using the space character as the token. <TABLE WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" CLASS="EXAMPLE" ><TR ><TD ><DIV CLASS="example" ><A NAME="AEN228272" ></A ><P ><B >例 1. <B CLASS="function" >strtok()</B > example</B ></P ><TABLE BORDER="0" BGCOLOR="#E0E0E0" CELLPADDING="5" ><TR ><TD ><code><font color="#000000"> <font color="#0000BB"><?php<br />$string </font><font color="#007700">= </font><font color="#DD0000">"This is\tan example\nstring"</font><font color="#007700">;<br /></font><font color="#FF8000">/* Use tab and newline as tokenizing characters as well */<br /></font><font color="#0000BB">$tok </font><font color="#007700">= </font><font color="#0000BB">strtok</font><font color="#007700">(</font><font color="#0000BB">$string</font><font color="#007700">, </font><font color="#DD0000">" \n\t"</font><font color="#007700">);<br /><br />while (</font><font color="#0000BB">$tok </font><font color="#007700">!== </font><font color="#0000BB">false</font><font color="#007700">) {<br /> echo </font><font color="#DD0000">"Word=$tok<br />"</font><font color="#007700">;<br /> </font><font color="#0000BB">$tok </font><font color="#007700">= </font><font color="#0000BB">strtok</font><font color="#007700">(</font><font color="#DD0000">" \n\t"</font><font color="#007700">);<br />}<br /></font><font color="#0000BB">?></font> </font> </code></TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE > </P ><P > Note that only the first call to strtok uses the string argument. Every subsequent call to strtok only needs the token to use, as it keeps track of where it is in the current string. To start over, or to tokenize a new string you simply call strtok with the string argument again to initialize it. Note that you may put multiple tokens in the token parameter. The string will be tokenized when any one of the characters in the argument are found. </P ><P > The behavior when an empty part was found changed with PHP 4.1.0. The old behavior returned an empty string, while the new, correct, behavior simply skips the part of the string: <TABLE WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" CLASS="EXAMPLE" ><TR ><TD ><DIV CLASS="example" ><A NAME="AEN228278" ></A ><P ><B >例 2. Old <B CLASS="function" >strtok()</B > behavior</B ></P ><TABLE BORDER="0" BGCOLOR="#E0E0E0" CELLPADDING="5" ><TR ><TD ><code><font color="#000000"> <font color="#0000BB"><?php<br />$first_token </font><font color="#007700">= </font><font color="#0000BB">strtok</font><font color="#007700">(</font><font color="#DD0000">'/something'</font><font color="#007700">, </font><font color="#DD0000">'/'</font><font color="#007700">);<br /></font><font color="#0000BB">$second_token </font><font color="#007700">= </font><font color="#0000BB">strtok</font><font color="#007700">(</font><font color="#DD0000">'/'</font><font color="#007700">);<br /></font><font color="#0000BB">var_dump</font><font color="#007700">(</font><font color="#0000BB">$first_token</font><font color="#007700">, </font><font color="#0000BB">$second_token</font><font color="#007700">);<br /></font><font color="#0000BB">?></font> </font> </code></TD ></TR ></TABLE ><P > Output: </P ><TABLE BORDER="0" BGCOLOR="#E0E0E0" CELLPADDING="5" ><TR ><TD ><PRE CLASS="screen" >string(0) "" string(9) "something"</PRE ></TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE > <TABLE WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" CLASS="EXAMPLE" ><TR ><TD ><DIV CLASS="example" ><A NAME="AEN228284" ></A ><P ><B >例 3. New <B CLASS="function" >strtok()</B > behavior</B ></P ><TABLE BORDER="0" BGCOLOR="#E0E0E0" CELLPADDING="5" ><TR ><TD ><code><font color="#000000"> <font color="#0000BB"><?php<br />$first_token </font><font color="#007700">= </font><font color="#0000BB">strtok</font><font color="#007700">(</font><font color="#DD0000">'/something'</font><font color="#007700">, </font><font color="#DD0000">'/'</font><font color="#007700">);<br /></font><font color="#0000BB">$second_token </font><font color="#007700">= </font><font color="#0000BB">strtok</font><font color="#007700">(</font><font color="#DD0000">'/'</font><font color="#007700">);<br /></font><font color="#0000BB">var_dump</font><font color="#007700">(</font><font color="#0000BB">$first_token</font><font color="#007700">, </font><font color="#0000BB">$second_token</font><font color="#007700">);<br /></font><font color="#0000BB">?></font> </font> </code></TD ></TR ></TABLE ><P > Output: </P ><TABLE BORDER="0" BGCOLOR="#E0E0E0" CELLPADDING="5" ><TR ><TD ><PRE CLASS="screen" >string(9) "something" bool(false)</PRE ></TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE > </P ><DIV CLASS="warning" ><P ></P ><TABLE CLASS="warning" BORDER="1" WIDTH="100%" ><TR ><TD ALIGN="CENTER" ><B >警告</B ></TD ></TR ><TR ><TD ALIGN="LEFT" ><P >本函数可能返回布尔值 <TT CLASS="constant" ><B >FALSE</B ></TT >,但也可能返回一个与 <TT CLASS="constant" ><B >FALSE</B ></TT > 等值的非布尔值,例如 <TT CLASS="literal" >0</TT > 或者 ""。请参阅<A HREF="language.types.boolean.html" >布尔类型</A >章节以获取更多信息。应使用 <A HREF="language.operators.comparison.html" >=== 运算符</A >来测试本函数的返回值。</P ></TD ></TR ></TABLE ></DIV ><P > See also <A HREF="function.split.html" ><B CLASS="function" >split()</B ></A > and <A HREF="function.explode.html" ><B CLASS="function" >explode()</B ></A >. </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="function.strstr.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.strtolower.html" ACCESSKEY="N" >下一页</A ></TD ></TR ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" >strstr</TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="ref.strings.html" ACCESSKEY="U" >上一级</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" >strtolower</TD ></TR ></TABLE ></DIV ></BODY ></HTML >