php-doc-en/functions/strings.sgml
Andrey Hristov 7494a105fd -Documented preg_grep() function
-Corrected prototype of quotemeta()


git-svn-id: https://svn.php.net/repository/phpdoc/en/trunk@10913 c90b9560-bf6c-de11-be94-00142212c4b1
1999-07-17 19:42:51 +00:00

1699 lines
53 KiB
Text
Raw Blame History

<reference id="ref.strings">
<title>String functions</title>
<titleabbrev>Strings</titleabbrev>
<partintro>
<simpara>
These functions all manipulate strings in various ways. Some more
specialized sections can be found in the regular expression and URL
handling sections.
</partintro>
<refentry id="function.addslashes">
<refnamediv>
<refname>AddSlashes</refname>
<refpurpose>quote string with slashes</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>string <function>addslashes</function></funcdef>
<paramdef>string <parameter>str</parameter></paramdef>
</funcsynopsis>
<para>
Returns a string with backslashes before characters that need
to be quoted in database queries etc. These characters are
single quote (<literal>'</literal>), double quote
(<literal>"</literal>), backslash (<literal>\</literal>)
and NUL (the null byte).
<para>
See also <function>stripslashes</function>, <function>htmlspecialchars</function>
and <function>quotemeta</function>.
</refsect1>
</refentry>
<refentry id="function.bin2hex">
<refnamediv>
<refname>bin2hex</refname>
<refpurpose>convert binary data into hexadecimal representation</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>string <function>bin2hex</function></funcdef>
<paramdef>string <parameter>str</parameter></paramdef>
</funcsynopsis>
<para>
Returns an ASCII string containing the hexadecimal representation of
<parameter>str</parameter>. The conversion is done byte-wise with
the high-nibble first.
</refsect1>
</refentry>
<refentry id="function.chop">
<refnamediv>
<refname>Chop</refname>
<refpurpose>remove trailing whitespace</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>string <function>chop</function></funcdef>
<paramdef>string <parameter>str</parameter></paramdef>
</funcsynopsis>
<para>
Returns the argument string without trailing whitespace.
<example>
<title>chop() example</title>
<programlisting>
$trimmed = Chop($line);
</programlisting></example>
<para>
See also <function>trim</function>.
</refsect1>
</refentry>
<refentry id="function.chr">
<refnamediv>
<refname>Chr</refname>
<refpurpose>return a specific character</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>string <function>chr</function></funcdef>
<paramdef>int <parameter>ascii</parameter></paramdef>
</funcsynopsis>
<para>
Returns a one-character string containing the character specified
by <parameter>ascii</parameter>.
<example>
<title>chr() example</title>
<programlisting>
$str .= chr(27); /* add an escape character at the end of $str */
/* Often this is more useful */
$str = sprintf("The string ends in escape: %c", 27);
</programlisting></example>
This function complements <function>ord</function>. See also
<function>sprintf</function> with a format string of
<literal>%c</literal>.
</refsect1>
</refentry>
<refentry id="function.chunk-split">
<refnamediv>
<refname>chunk_split</refname>
<refpurpose>Split a string into smaller chunks</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>string <function>chunk_split</function></funcdef>
<paramdef>string <parameter>string</parameter></paramdef>
<paramdef>int <parameter><optional>chunklen</optional>
</parameter></paramdef>
<paramdef>string <parameter><optional>end</optional>
</parameter></paramdef>
</funcsynopsis>
<para>
Can be used to split a string into smaller chunks which is useful
for e.g. converting <link
linkend="function.base64-encode">base64_encode</link> output to
match RFC 2045 semantics. It inserts every
<parameter>chunklen</parameter> (defaults to 76) chars the string
<parameter>end</parameter> (defaults to "\r\n"). It returns the
new string leaving the original string untouched.
<example>
<title>chunk_split() example</title>
<programlisting>
# format $data using RFC 2045 semantics
$new_string = chunk_split(base64_encode($data));
</programlisting></example>
This function is significantly faster than
<function>ereg_replace</function>.
</refsect1>
</refentry>
<refentry id="function.convert-cyr-string">
<refnamediv>
<refname>convert_cyr_string</refname>
<refpurpose>Convert from one Cyrillic character set to another</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>string <function>convert_cyr_string</function></funcdef>
<paramdef>string <parameter>str</parameter></paramdef>
<paramdef>string <parameter>from</parameter></paramdef>
<paramdef>string <parameter>to</parameter></paramdef>
</funcsynopsis>
<para>
This function converts the given string from one Cyrillic character set to
another. The <parameter>from</parameter> and <parameter>to</parameter> arguments
are single characters that represent the source and target Cyrillic character
sets. The supported types are:
<itemizedlist>
<listitem><simpara>
k - koi8-r
<listitem><simpara>
w - windows-1251
<listitem><simpara>
i - iso8859-5
<listitem><simpara>
a - x-cp866
<listitem><simpara>
d - x-cp866
<listitem><simpara>
m - x-mac-cyrillic
</itemizedlist>
</refsect1>
</refentry>
<refentry id="function.crypt">
<refnamediv>
<refname>crypt</refname>
<refpurpose>DES-encrypt a string</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>string <function>crypt</function></funcdef>
<paramdef>string <parameter>str</parameter></paramdef>
<paramdef>string <parameter><optional>salt</optional></parameter></paramdef>
</funcsynopsis>
<para>
<function>crypt</function> will encrypt a string using the
standard Unix <abbrev>DES</abbrev> encryption method. Arguments
are a string to be encrypted and an optional two-character salt
string to base the encryption on. See the Unix man page for your
crypt function for more information.
<simpara>
If the salt argument is not provided, it will be randomly generated
by PHP.
<simpara>
Some operating systems support more than one type of encryption.
In fact, sometimes the standard DES encryption is replaced by an
MD5 based encryption algorithm. The encryption type is triggered by
the salt argument. At install time, PHP determines the capabilities
of the crypt function and will accept salts for other encryption
types. If no salt is provided, PHP will auto-generate a standard
2-character DES salt by default unless the default encryption type
on the system is MD5 in which case a random MD5-compatible salt
is generated. PHP sets a constant named CRYPT_SALT_LENGTH which
tells you whether a regular 2-character salt applies to your system
or the longer 12-char MD5 salt is applicable.
<simpara>
The standard DES encryption <function>crypt</function> contains
the salt as the first two characters of the output.
<simpara>
On systems where the crypt() function supports multiple encryption
types, the following constants are set to 0 or 1 depending on whether
the given type is available:
<itemizedlist>
<listitem><simpara>CRYPT_STD_DES - Standard DES encryption with a 2-char SALT</simpara></listitem>
<listitem><simpara>CRYPT_EXT_DES - Extended DES encryption with a 9-char SALT</simpara></listitem>
<listitem><simpara>CRYPT_MD5 - MD5 encryption with a 12-char SALT starting with $1$</simpara></listitem>
<listitem><simpara>CRYPT_BLOWFISH - Extended DES encryption with a 16-char SALT starting with $2$</simpara></listitem>
</itemizedlist>
<simpara>
There is no decrypt function, since <function>crypt</function>
uses a one-way algorithm.
</refsect1>
</refentry>
<refentry id="function.echo">
<refnamediv>
<refname>echo</refname>
<refpurpose>output one or more strings</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef><function>echo</function></funcdef>
<paramdef>string <parameter>arg1</parameter></paramdef>
<paramdef>string <parameter><optional>argn</optional>...</parameter></paramdef>
</funcsynopsis>
<simpara>
Outputs all parameters.
<para>
<function>echo</function> is not actually a function (it
is a language construct) so you are not required to use
parantheses with it.
<example><title>echo example</title>
<programlisting>
echo "Hello World";
</programlisting>
</example>
</para>
<note>
<para>
In fact, if you want to pass more than one parameter to
echo, you must not enclose the parameters within parentheses.
</para>
</note>
<simpara>
See also:
<function>print</function>
<function>printf</function>
<function>flush</function>
</refsect1>
</refentry>
<refentry id="function.explode">
<refnamediv>
<refname>explode</refname>
<refpurpose>split a string by string</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>array <function>explode</function></funcdef>
<paramdef>string <parameter>separator</parameter></paramdef>
<paramdef>string <parameter>string</parameter></paramdef>
</funcsynopsis>
<para>
Returns an array of strings containing the elements separated by
<replaceable>separator</replaceable>.
<example>
<title>explode() example</title>
<programlisting>
$pizza = "piece1 piece2 piece3 piece4 piece5 piece6";
$pieces = explode(" ", $pizza);
</programlisting></example>
<para>
See also <function>split</function> and
<function>implode</function>.
</refsect1>
</refentry>
<refentry id="function.flush">
<refnamediv>
<refname>flush</refname>
<refpurpose>flush the output buffer</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>void <function>flush</function></funcdef>
<void>
</funcsynopsis>
<simpara>
Flushes the output buffers of PHP and whatever backend PHP is
using (CGI, a web server, etc.) This effectively tries to push
all the output so far to the user's browser.
</refsect1>
</refentry>
<refentry id="function.get-meta-tags">
<refnamediv>
<refname>get_meta_tags</refname>
<refpurpose>Extracts all meta tag content attributes from a file
and returns an array</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>array <function>get_meta_tags</function></funcdef>
<paramdef>string <parameter>filename</parameter></paramdef>
<paramdef>int
<parameter><optional>use_include_path</optional></parameter></paramdef>
</funcsynopsis>
<para>
Opens <parameter>filename</parameter> and parses it line by line
for &lt;meta> tags of the form
<example>
<title>Meta Tags Example</title>
<programlisting>
&lt;meta name="author" content="name">
&lt;meta name="tags" content="php3 documentation">
&lt;/head> &lt;!-- parsing stops here -->
</programlisting></example>
(pay attention to line endings - PHP uses a native function to parse
the input, so a Mac file won't work on Unix).
<para>
The value of the name property becomes the key, the value of the
content property becomes the value of the returned array, so you
can easily use standard array functions to traverse it or access
single values. Special characters in the value of the name
property are substituted with '_', the rest is converted to lower
case.
<para>
Setting <parameter>use_include_path</parameter> to 1 will result
in PHP trying to open the file along the standard include path.
</refsect1>
</refentry>
<refentry id="function.htmlspecialchars">
<refnamediv>
<refname>htmlspecialchars</refname>
<refpurpose>Convert special characters to HTML entities.</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>string <function>htmlspecialchars</function></funcdef>
<paramdef>string <parameter>string</parameter></paramdef>
</funcsynopsis>
<para>
Certain characters have special significance in HTML, and should
be represented by HTML entities if they are to preserve their
meanings. This function returns a string with these conversions
made.
<simpara>
This function is useful in preventing user-supplied text from
containing HTML markup, such as in a message board or
guest book application.
<para>
At present, the translations that are done are:
<itemizedlist>
<listitem>
<simpara>
'&amp;' (ampersand) becomes '&amp;amp;'
<listitem>
<simpara>
'&quot;' (double quote) becomes '&amp;quot;'
<listitem>
<simpara>
'&lt;' (less than) becomes '&amp;lt;'
<listitem>
<simpara>
'&gt;' (greater than) becomes '&amp;gt;'
</itemizedlist>
<para>
Note that this functions does not translate anything beyond what
is listed above. For full entity translation, see <function>htmlentities</function>.
<para>
See also <function>htmlentities</function> and <function>nl2br</function>.
</refsect1>
</refentry>
<refentry id="function.htmlentities">
<refnamediv>
<refname>htmlentities</refname>
<refpurpose>Convert all applicable characters to HTML entities.</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>string <function>htmlentities</function></funcdef>
<paramdef>string <parameter>string</parameter></paramdef>
</funcsynopsis>
<para>
This function is identical to <function>htmlspecialchars</function> in
all ways, except that all characters which have HTML entity
equivalents are translated into these entities.
<para>
At present, the ISO-8859-1 character set is used.
<para>
See also <function>htmlspecialchars</function> and
<function>nl2br</function>.
</refsect1>
</refentry>
<refentry id="function.implode">
<refnamediv>
<refname>implode</refname>
<refpurpose>join array elements with a string</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>string <function>implode</function></funcdef>
<paramdef>string <parameter>glue</parameter></paramdef>
<paramdef>array <parameter>pieces</parameter></paramdef>
</funcsynopsis>
<para>
Returns a string containing a string representation of all the
array elements in the same order, with the glue string between
each element.
<example>
<title>implode() example</title>
<programlisting>
$colon_separated = implode(":", $array);
</programlisting></example>
<simpara>
See also <function>explode</function>, <function>join</function>,
and <function>split</function>.
</refsect1>
</refentry>
<refentry id="function.join">
<refnamediv>
<refname>join</refname>
<refpurpose>join array elements with a string</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>string <function>join</function></funcdef>
<paramdef>string <parameter>glue</parameter></paramdef>
<paramdef>array <parameter>pieces</parameter></paramdef>
</funcsynopsis>
<simpara>
<function>join</function> is an alias to
<function>implode</function>, and is identical in every way.
</refsect1>
</refentry>
<refentry id="function.ltrim">
<refnamediv>
<refname>ltrim</refname> <refpurpose>Strip whitespace from the beginning of a string.</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>string <function>ltrim</function></funcdef>
<paramdef>string <parameter>str</parameter></paramdef>
</funcsynopsis>
<para>
This function strips whitespace from the start of a string and returns the stripped string.
<para>
See also <function>chop</function> and <function>trim</function>.
</refsect1>
</refentry>
<refentry id="function.md5">
<refnamediv>
<refname>md5</refname>
<refpurpose>calculate the md5 hash of a string</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>string <function>md5</function></funcdef>
<paramdef>string <parameter>str</parameter></paramdef>
</funcsynopsis>
<para>
Calculates the MD5 hash of <parameter>str</parameter> using the
<ulink url="http://ds.internic.net/rfc/rfc1321.txt">RSA Data
Security, Inc. MD5 Message-Digest Algorithm</ulink>.
</refsect1>
</refentry>
<refentry id="function.nl2br">
<refnamediv>
<refname>nl2br</refname>
<refpurpose>Converts newlines to HTML line breaks.</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>string <function>nl2br</function></funcdef>
<paramdef>string <parameter>string</parameter></paramdef>
</funcsynopsis>
<para>
Returns <parameter>string</parameter> with '&lt;BR&gt;' inserted
before all newlines.
<para>
See also <function>htmlspecialchars</function> and
<function>htmlentities</function>.
</refsect1>
</refentry>
<refentry id="function.ord">
<refnamediv>
<refname>Ord</refname>
<refpurpose>return ASCII value of character</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>int <function>ord</function></funcdef>
<paramdef>string <parameter>string</parameter></paramdef>
</funcsynopsis>
<para>
Returns the ASCII value of the first character of
<parameter>string</parameter>. This function complements
<function>chr</function>.
<example>
<title>ord() example</title>
<programlisting>
if (ord($str) == 10) {
echo("The first character of \$str is a line feed.\n");
}
</programlisting></example>
<simpara>
See also <function>chr</function>.
</refsect1>
</refentry>
<refentry id="function.parse-str">
<refnamediv>
<refname>parse_str</refname>
<refpurpose>parses the string into variables</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>void <function>parse_str</function></funcdef>
<paramdef>string <parameter>str</parameter></paramdef>
</funcsynopsis>
<para>
Parses <parameter>str</parameter> as if it were the query string
passed via an URL and sets variables in the current scope.
<para>
<example>
<title>Using <function>parse_str</function></title>
<programlisting>
$str = "first=value&amp;second[]=this+works&amp;second[]=another";
parse_str($str);
echo $first; /* prints "value" */
echo $second[0]; /* prints "this works" */
echo $second[1]; /* prints "another" */
</programlisting>
</example>
</refsect1>
</refentry>
<refentry id="function.print">
<refnamediv>
<refname>print</refname>
<refpurpose>output a string</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef><function>print</function></funcdef>
<paramdef>string <parameter>arg</parameter></paramdef>
</funcsynopsis>
<simpara>
Outputs <parameter>arg</parameter>.
<simpara>
See also:
<function>echo</function>
<function>printf</function>
<function>flush</function>
</refsect1>
</refentry>
<refentry id="function.printf">
<refnamediv>
<refname>printf</refname>
<refpurpose>output a formatted string</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>int <function>printf</function></funcdef>
<paramdef>string <parameter>format</parameter></paramdef>
<paramdef>mixed <parameter><optional>args</optional></parameter>...</paramdef>
</funcsynopsis>
<simpara>
Produces output according to <parameter>format</parameter>, which
is described in the documentation for <function>sprintf</function>.
<simpara>
See also:
<function>print</function>,
<function>sprintf</function>, and
<function>flush</function>.
</refsect1>
</refentry>
<refentry id="function.quoted-printable-decode">
<refnamediv>
<refname>quoted_printable_decode</refname>
<refpurpose>Convert a quoted-printable string to an 8 bit string
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>string <function>quoted_printable_decode</function></funcdef>
<paramdef>string <parameter>str</parameter></paramdef>
</funcsynopsis>
<simpara>
This function returns an 8-bit binary string corresponding to the decoded
quoted printable string. This function is similar to <function>imap_qprint</function>,
except this one does not require the IMAP module to work.
</refsect1>
</refentry>
<refentry id="function.quotemeta">
<refnamediv>
<refname>QuoteMeta</refname>
<refpurpose>quote meta characters</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>string <function>quotemeta</function></funcdef>
<paramdef>string <parameter>str</parameter></paramdef>
</funcsynopsis>
<para>
Returns a version of str with a backslash character
(<literal>\</literal>) before every character that is among
these: <screen>. \\ + * ? [ ^ ] ( $ )</screen>
<simpara>
See also <function>addslashes</function>,
<function>htmlentities</function>,
<function>htmlspecialchars</function>,
<function>nl2br</function>, and
<function>stripslashes</function>.
</refsect1>
</refentry>
<refentry id="function.rawurldecode">
<refnamediv>
<refname>rawurldecode</refname>
<refpurpose>decode URL-encoded strings</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>string <function>rawurldecode</function></funcdef>
<paramdef>string <parameter>str</parameter></paramdef>
</funcsynopsis>
<para>
Returns a string in which the sequences with percent
(<literal>%</literal>) signs followed by two hex digits have been
replaced with literal characters. For example, the string
<screen>foo%20bar%40baz</screen> decodes into
<screen>foo bar@baz</screen>
<simpara>
See also <function>rawurlencode</function>.
</refsect1>
</refentry>
<refentry id="function.rawurlencode">
<refnamediv>
<refname>rawurlencode</refname>
<refpurpose>URL-encode according to RFC1738</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>string <function>rawurlencode</function></funcdef>
<paramdef>string <parameter>str</parameter></paramdef>
</funcsynopsis>
<para>
Returns a string in which all non-alphanumeric characters except
<screen>-_.</screen> have been replaced with a percent
(<literal>%</literal>) sign followed by two hex digits. This is
the encoding described in RFC1738 for protecting literal
characters from being interpreted as special URL delimiters, and
for protecting URL's from being mangled by transmission media
with character conversions (like some email systems). For
example, if you want to include a password in an ftp url:
<example>
<title>rawurlencode() example 1</title>
<programlisting>
echo '&lt;A HREF="ftp://user:', rawurlencode ('foo @+%/'),
'@ftp.my.com/x.txt">';
</programlisting></example>
Or, if you pass information in a path info component of the url:
<example>
<title>rawurlencode() example 2</title>
<programlisting>
echo '&lt;A HREF="http://x.com/department_list_script/',
rawurlencode ('sales and marketing/Miami'), '">';
</programlisting></example>
<simpara>
See also <function>rawurldecode</function>.
</refsect1>
</refentry>
<refentry id="function.setlocale">
<refnamediv>
<refname>setlocale</refname>
<refpurpose>set locale information</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>string <function>setlocale</function></funcdef>
<paramdef>string <parameter>category</parameter></paramdef>
<paramdef>string <parameter>locale</parameter></paramdef>
</funcsynopsis>
<para>
<parameter>category</parameter> is a string specifying the
category of the functions affected by the locale setting:
<itemizedlist>
<listitem><simpara>
LC_ALL for all of the below
</simpara></listitem><listitem><simpara>
LC_COLLATE for string comparison - not currently implemented in PHP
</simpara></listitem><listitem><simpara>
LC_CTYPE for character classification and conversion, for
example <function>strtoupper</function>
</simpara></listitem><listitem><simpara>
LC_MONETARY for localeconv() - not currently implemented in PHP
</simpara></listitem><listitem><simpara>
LC_NUMERIC for decimal separator
</simpara></listitem><listitem><simpara>
LC_TIME for date and time formatting with <function>strftime</function>
</simpara></listitem>
</itemizedlist>
<para>
If <parameter>locale</parameter> is the empty string
<literal>""</literal>, the locale names will be set from the
values of environment variables with the same names as the above
categories, or from "LANG".
<para>
If locale is zero or <literal>"0"</literal>, the locale setting
is not affected, only the current setting is returned.
<para>
Setlocale returns the new current locale, or false if the locale
functionality is not implemented in the plattform, the specified
locale does not exist or the category name is invalid.
An invalid category name also causes a warning message.
</refsect1>
</refentry>
<refentry id="function.similar-text">
<refnamediv>
<refname>similar_text</refname>
<refpurpose>calculate the similarity between two strings</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>int <function>similar_text</function></funcdef>
<paramdef>string <parameter>first</parameter></paramdef>
<paramdef>string <parameter>second</parameter></paramdef>
<paramdef>double <parameter><optional>percent</optional></parameter></paramdef>
</funcsynopsis>
<para>
This calculates the similarity between two strings as
described in Oliver [1993]. Note that this implementation does
not use a stack as in Oliver's pseudo code, but recursive calls
which may or may not speed up the whole process. Note also
that the complexity of this algorithm is O(N**3) where N
is the length of the longest string.
<para>
By passing a reference as third argument, <function>similar_text</function>
will calculate the similarity in percent for you. It returns
the number of matching chars in both strings.
</refsect1>
</refentry>
<refentry id="function.soundex">
<refnamediv>
<refname>soundex</refname>
<refpurpose>calculate the soundex key of a string</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>string <function>soundex</function></funcdef>
<paramdef>string <parameter>str</parameter></paramdef>
</funcsynopsis>
<para>
Calculates the soundex key of <parameter>str</parameter>.
<para>
Soundex keys have the property that words pronounced similarly produce the
same soundex key, and can thus be used to simplify searches in databases
where you know the pronunciation but not the spelling. This soundex function
returns a string 4 characters long, starting with a letter.
<para>
This particular soundex function is one described by Donald Knuth in "The Art Of Computer Programming,
vol. 3: Sorting And Searching", Addison-Wesley (1973), pp. 391-392.
<para>
<example>
<title>Soundex Examples</title>
<programlisting>
soundex("Euler") == soundex("Ellery") == 'E460';
soundex("Gauss") == soundex("Ghosh") == 'G200';
soundex("Knuth") == soundex("Kant") == 'H416';
soundex("Lloyd") == soundex("Ladd") == 'L300';
soundex("Lukasiewicz") == soundex("Lissajous") == 'L222';
</programlisting>
</example>
</refsect1>
</refentry>
<refentry id="function.sprintf">
<refnamediv>
<refname>sprintf</refname>
<refpurpose>return a formatted string</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef><function>sprintf</function></funcdef>
<paramdef>string <parameter>format</parameter></paramdef>
<paramdef>mixed <parameter><optional>args</optional></parameter>...</paramdef>
</funcsynopsis>
<simpara>
Returns a string produced according to the formatting string
<parameter>format</parameter>.
<simpara>
The format string is composed by zero or more directives:
ordinary characters (excluding <literal>%</literal>) that are
copied directly to the result, and <emphasis>conversion
specifications</emphasis>, each of which results in fetching its
own parameter. This applies to both <function>sprintf</function>
and <function>printf</function>
<para>
Each conversion specification consists of these elements, in
order:
<orderedlist>
<listitem><simpara>
An optional <emphasis>padding specifier</emphasis> that says
what character will be used for padding the results to the
right string size. This may be a space character or a
<literal>0</literal> (zero character). The default is to pad
with spaces. An alternate padding character can be specified
by prefixing it with a single quote (<literal>'</literal>).
See the examples below.
<listitem><simpara>
An optional <emphasis>alignment specifier</emphasis> that says
if the result should be left-justified or right-justified.
The default is right-justified; a <literal>-</literal>
character here will make it left-justified.
<listitem><simpara>
An optional number, a <emphasis>width specifier</emphasis>
that says how many characters (minimum) this conversion should
result in.
<listitem><simpara>
An optional <emphasis>precision specifier</emphasis> that says
how many decimal digits should be displayed for floating-point
numbers. This option has no effect for other types than
double. (Another function useful for formatting numbers is
<function>number_format</function>.)
<listitem><para>
A <emphasis>type specifier</emphasis> that says what type the
argument data should be treated as. Possible types:
<simplelist>
<member>
<literal>%</literal> - a literal percent character. No
argument is required.
</member>
<member>
<literal>b</literal> - the argument is treated as an
integer, and presented as a binary number.
</member>
<member>
<literal>c</literal> - the argument is treated as an
integer, and presented as the character with that ASCII
value.
</member>
<member>
<literal>d</literal> - the argument is treated as an
integer, and presented as a decimal number.
</member>
<member>
<literal>f</literal> - the argument is treated as a double,
and presented as a floating-point number.
</member>
<member>
<literal>o</literal> - the argument is treated as an
integer, and presented as an octal number.
</member>
<member>
<literal>s</literal> - the argument is treated as and
presented as a string.
</member>
<member>
<literal>x</literal> - the argument is treated as an
integer and presented as a hexadecimal number (with
lowercase letters).
</member>
<member>
<literal>X</literal> - the argument is treated as an
integer and presented as a hexadecimal number (with
uppercase letters).
</member>
</simplelist>
</orderedlist>
<simpara>
See also:
<function>printf</function>, <function>number_format</function>
</refsect1>
<refsect1>
<title>Examples</title>
<para>
<example>
<title>sprintf: zero-padded integers</title>
<programlisting>
$isodate = sprintf("%04d-%02d-%02d", $year, $month, $day);
</programlisting></example>
<example>
<title>sprintf: formatting currency</title>
<programlisting>
$money1 = 68.75;
$money2 = 54.35;
$money = $money1 + $money2;
// echo $money will output "123.1";
$formatted = sprintf ("%01.2f", $money);
// echo $formatted will output "123.10"
</programlisting></example>
</para>
</refsect1>
</refentry>
<refentry id="function.strchr">
<refnamediv>
<refname>strchr</refname>
<refpurpose>Find the first occurrence of a character.</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>string <function>strchr</function></funcdef>
<paramdef>string <parameter>haystack</parameter></paramdef>
<paramdef>string <parameter>needle</parameter></paramdef>
</funcsynopsis>
<para>
This function is an alias for <function>strstr</function>, and is
identical in every way.
</refsect1>
</refentry>
<refentry id="function.strcmp">
<refnamediv>
<refname>strcmp</refname>
<refpurpose>binary safe string comparison</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>int <function>strcmp</function></funcdef>
<paramdef>string <parameter>str1</parameter></paramdef>
<paramdef>string <parameter>str2</parameter></paramdef>
</funcsynopsis>
<simpara>
Returns < 0 if <parameter>str1</parameter> is less than
<parameter>str2</parameter>; > 0 if <parameter>str1</parameter>
is greater than <parameter>str2</parameter>, and 0 if they are
equal.
<simpara>
Note that this comparison is case sensitive.
<simpara>
See also <function>ereg</function>, <function>substr</function>,
and <function>strstr</function>.
</refsect1>
</refentry>
<refentry id="function.strcspn">
<refnamediv>
<refname>strcspn</refname>
<refpurpose>find length of initial segment not matching mask</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>int <function>strcspn</function></funcdef>
<paramdef>string <parameter>str1</parameter></paramdef>
<paramdef>string <parameter>str2</parameter></paramdef>
</funcsynopsis>
<simpara>
Returns the length of the initial segment of <parameter>str1</parameter> which does
<emphasis>not</emphasis> contain any of the characters in <parameter>str2</parameter>.
<simpara>
See also <function>strspn</function>.
</refsect1>
</refentry>
<refentry id="function.strip-tags">
<refnamediv>
<refname>strip_tags</refname>
<refpurpose>Strip HTML and PHP tags from a string</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>string <function>strip_tags</function></funcdef>
<paramdef>string <parameter>str</parameter></paramdef>
</funcsynopsis>
<simpara>
This function tries to strip all HTML and PHP tags from the given
string. It errors on the side of caution in case of incomplete
or bogus tags. It uses the same tag stripping state machine as
the <function>fgetss</function> function.
</refsect1>
</refentry>
<refentry id="function.stripslashes">
<refnamediv>
<refname>StripSlashes</refname>
<refpurpose>un-quote string quoted with addslashes</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>string <function>stripslashes</function></funcdef>
<paramdef>string <parameter>str</parameter></paramdef>
</funcsynopsis>
<para>
Returns a string with backslashes stripped off.
(<literal>\'</literal> becomes <literal>'</literal> and so on.)
Double backslashes are made into a single backslash.
<simpara>
See also <function>addslashes</function>.
</refsect1>
</refentry>
<refentry id="function.strlen">
<refnamediv>
<refname>strlen</refname>
<refpurpose>get string length</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>int <function>strlen</function></funcdef>
<paramdef>string <parameter>str</parameter></paramdef>
</funcsynopsis>
<para>
Returns the length of <parameter>string</parameter>.
</refsect1>
</refentry>
<refentry id="function.strrpos">
<refnamediv>
<refname>strrpos</refname>
<refpurpose>Find position of last occurrence of a char in a string.</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>int <function>strrpos</function></funcdef>
<paramdef>string <parameter>haystack</parameter></paramdef>
<paramdef>char <parameter>needle</parameter></paramdef>
</funcsynopsis>
<para>
Returns the numeric position of the last occurrence of <parameter>needle</parameter>
in the <parameter>haystack</parameter> string. Note that the needle in this case can
only be a single character. If a string is passed as the needle, then only the first
character of that string will be used.
<para>
If <parameter>needle</parameter> is not found, returns false.
<para>
If <parameter>needle</parameter> is not a string, it is converted to
an integer and applied as the ordinal value of a character.
<para>
See also <function>strpos</function>, <function>strrchr</function>,
<function>substr</function>, and <function>strstr</function>.
</refsect1>
</refentry>
<refentry id="function.strpos">
<refnamediv>
<refname>strpos</refname>
<refpurpose>Find position of first occurrence of a string.</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>int <function>strpos</function></funcdef>
<paramdef>string <parameter>haystack</parameter></paramdef>
<paramdef>string <parameter>needle</parameter></paramdef>
<paramdef>int <parameter><optional>offset</optional></parameter></paramdef>
</funcsynopsis>
<para>
Returns the numeric position of the first occurrence of <parameter>needle</parameter>
in the <parameter>haystack</parameter> string. Unlike the <function>strrpos</function>,
this function can take a full string as the <parameter>needle</parameter> parameter and
the entire string will be used.
<para>
If <parameter>needle</parameter> is not found, returns false.
<para>
If <parameter>needle</parameter> is not a string, it is converted to
an integer and applied as the ordinal value of a character.
<para>
The optional <parameter>offset</parameter> parameter allows you to
specify which character in <parameter>haystack</parameter> to start
searching. The position returned is still relative to the the beginning
of <parameter>haystack</parameter>.
<para>
See also <function>strrpos</function>, <function>strrchr</function>,
<function>substr</function>, and <function>strstr</function>.
</refsect1>
</refentry>
<refentry id="function.strrchr">
<refnamediv>
<refname>strrchr</refname>
<refpurpose>Find the last occurrence of a character in a string.</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>string <function>strrchr</function></funcdef>
<paramdef>string <parameter>haystack</parameter></paramdef>
<paramdef>string <parameter>needle</parameter></paramdef>
</funcsynopsis>
<para>
This function returns the portion of
<parameter>haystack</parameter> which starts at the last occurrence of
<parameter>needle</parameter> and goes until the end of
<parameter>haystack</parameter>.
<para>
Returns false if <parameter>needle</parameter> is not found.
<para>
If <parameter>needle</parameter> contains more than one character,
the first is used.
<para>
If <parameter>needle</parameter> is not a string, it is converted to
an integer and applied as the ordinal value of a character.
<example>
<title>strrchr() example</title>
<programlisting>
// get last directory in $PATH
$dir = substr( strrchr( $PATH, ":" ), 1 );
// get everything after last newline
$text = "Line 1\nLine 2\nLine 3";
$last = substr( strrchr( $text, 10 ), 1 );
</programlisting>
</example>
<para>
See also <function>substr</function> and <function>strstr</function>.
</refsect1>
</refentry>
<refentry id="function.strrev">
<refnamediv>
<refname>strrev</refname>
<refpurpose>Reverse a string.</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>string <function>strrev</function></funcdef>
<paramdef>string <parameter>string</parameter></paramdef>
</funcsynopsis>
<para>
Returns <parameter>string</parameter>, reversed.
</refsect1>
</refentry>
<refentry id="function.strspn">
<refnamediv>
<refname>strspn</refname>
<refpurpose>find length of initial segment matching mask</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>int <function>strspn</function></funcdef>
<paramdef>string <parameter>str1</parameter></paramdef>
<paramdef>string <parameter>str2</parameter></paramdef>
</funcsynopsis>
<simpara>
Returns the length of the initial segment of
<parameter>str1</parameter> which consists entirely of
characters in <parameter>str2</parameter>.
<simpara>
See also <function>strcspn</function>.
</refsect1>
</refentry>
<refentry id="function.strstr">
<refnamediv>
<refname>strstr</refname>
<refpurpose>Find first occurrence of a string.</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>string <function>strstr</function></funcdef>
<paramdef>string <parameter>haystack</parameter></paramdef>
<paramdef>string <parameter>needle</parameter></paramdef>
</funcsynopsis>
<para>
Returns all of <parameter>haystack</parameter> from the first
occurrence of <parameter>needle</parameter> to the end.
<para>
If <parameter>needle</parameter> is not found, returns false.
<para>
If <parameter>needle</parameter> is not a string, it is converted to
an integer and applied as the ordinal value of a character.
<para>
See also <function>strrchr</function>,
<function>substr</function>, and <function>ereg</function>.
</refsect1>
</refentry>
<refentry id="function.strtok">
<refnamediv>
<refname>strtok</refname>
<refpurpose>tokenize string</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>string <function>strtok</function></funcdef>
<paramdef>string <parameter>arg1</parameter></paramdef>
<paramdef>string <parameter>arg2</parameter></paramdef>
</funcsynopsis>
<para>
<function>strtok</function> is used to tokenize a string. 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.
<example>
<title>strtok() example</title>
<programlisting>
$string = "This is an example string";
$tok = strtok($string," ");
while($tok) {
echo "Word=$tok&lt;br>";
$tok = strtok(" ");
}
</programlisting></example>
<para>
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.
<para>
Also be careful that your tokens may be equal to "0". This
evaluates to false in conditional expressions.
<para>
See also <function>split</function> and
<function>explode</function>.
</refsect1>
</refentry>
<refentry id="function.strtolower">
<refnamediv>
<refname>strtolower</refname>
<refpurpose>Make a string lowercase.</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>string <function>strtolower</function></funcdef>
<paramdef>string <parameter>str</parameter></paramdef>
</funcsynopsis>
<para>
Returns <parameter>string</parameter> with all alphabetic
characters converted to lowercase.
<para>
Note that 'alphabetic' is determined by the current locale. This
means that in i.e. the default "C" locale, characters such as
umlaut-A (<28>) will not be converted.
<para>
See also <function>strtoupper</function>
and <function>ucfirst</function>.
</refsect1>
</refentry>
<refentry id="function.strtoupper">
<refnamediv>
<refname>strtoupper</refname>
<refpurpose>Make a string uppercase.</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>string <function>strtoupper</function></funcdef>
<paramdef>string <parameter>string</parameter></paramdef>
</funcsynopsis>
<para>
Returns <parameter>string</parameter> with all alphabetic
characters converted to uppercase.
<para>
Note that 'alphabetic' is determined by the current locale. For
instance, in the default "C" locale characters such as umlaut-a
(<28>) will not be converted.
<para>
See also <function>strtolower</function>
and <function>ucfirst</function>.
</refsect1>
</refentry>
<refentry id="function.str-replace">
<refnamediv>
<refname>str_replace</refname>
<refpurpose>Replace all occurrences of needle in haystack with str</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>string <function>str_replace</function></funcdef>
<paramdef>string <parameter>needle</parameter></paramdef>
<paramdef>string <parameter>str</parameter></paramdef>
<paramdef>string <parameter>haystack</parameter></paramdef>
</funcsynopsis>
<para>
This function replaces all occurences of <parameter>needle</parameter>
in <parameter>haystack</parameter> with the given
<parameter>str</parameter>. If you don't need fancy replacing
rules, you should always use this function instead of
<function>ereg_replace</function>.
<para>
<example>
<title>str_replace() example</title>
<programlisting>
$bodytag = str_replace("%body%", "black", "&lt;body text=%body%>");
</programlisting>
</example>
<para>
This function is binary safe.
<para>
See also <function>ereg_replace</function>.
</refsect1>
</refentry>
<refentry id="function.strtr">
<refnamediv>
<refname>strtr</refname>
<refpurpose>Translate certain characters.</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>string <function>strtr</function></funcdef>
<paramdef>string <parameter>str</parameter></paramdef>
<paramdef>string <parameter>from</parameter></paramdef>
<paramdef>string <parameter>to</parameter></paramdef>
</funcsynopsis>
<para>
This function operates on <parameter>str</parameter>, translating
all occurrences of each character in <parameter>from</parameter>
to the corresponding character in <parameter>to</parameter> and
returning the result.
<para>
If <parameter>from</parameter> and <parameter>to</parameter> are
different lengths, the extra characters in the longer of the two
are ignored.
<example>
<title>strtr() example</title>
<programlisting>
$addr = strtr($addr, "<22><><EFBFBD>", "aao");
</programlisting>
</example>
<para>
See also <function>ereg_replace</function>.
</refsect1>
</refentry>
<refentry id="function.substr">
<refnamediv>
<refname>substr</refname>
<refpurpose>Return part of a string.</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>string <function>substr</function></funcdef>
<paramdef>string <parameter>string</parameter></paramdef>
<paramdef>int <parameter>start</parameter></paramdef>
<paramdef>int <parameter><optional>length</optional></parameter></paramdef>
</funcsynopsis>
<para>
Substr returns the portion of <parameter>string</parameter>
specified by the <parameter>start</parameter> and
<parameter>length</parameter> parameters.
<para>
If <parameter>start</parameter> is positive, the returned string
will start at the <parameter>start</parameter>'th character of
<parameter>string</parameter>. Examples:
<informalexample><programlisting role=php>
$rest = substr("abcdef", 1); // returns "bcdef"
$rest = substr("abcdef", 1, 3); // returns "bcd"
</programlisting>
</informalexample>
<para>
If <parameter>start</parameter> is negative, the returned string
will start at the <parameter>start</parameter>'th character
from the end of <parameter>string</parameter>. Examples:
<informalexample><programlisting role=php>
$rest = substr("abcdef", -1); // returns "f"
$rest = substr("abcdef", -2); // returns "ef"
$rest = substr("abcdef", -3, 1); // returns "d"
</programlisting>
</informalexample>
<para>
If <parameter>length</parameter> is given and is positive,
the string returned will end <parameter>length</parameter>
characters from <parameter>start</parameter>. If this would
result in a string with negative length (because the start
is past the end of the string), then the returned string
will contain the single character at <parameter>start</parameter>.
<para>
If <parameter>length</parameter> is given and is negative,
the string returned will end <parameter>length</parameter>
characters from the end of <parameter>string</parameter>. If this would
result in a string with negative length, then the returned string
will contain the single character at <parameter>start</parameter>.
Examples:
<informalexample><programlisting role=php>
$rest = substr("abcdef", 1, -1); // returns "bcde"
</programlisting>
</informalexample>
<para>
See also <function>strrchr</function> and
<function>ereg</function>.
</refsect1>
</refentry>
<refentry id="function.trim">
<refnamediv>
<refname>trim</refname> <refpurpose>Strip whitespace from the beginning and end of a string.</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>string <function>trim</function></funcdef>
<paramdef>string <parameter>str</parameter></paramdef>
</funcsynopsis>
<para>
This function strips whitespace from the start and the end of a string and returns the stripped string.
<para>
See also <function>chop</function> and <function>ltrim</function>.
</refsect1>
</refentry>
<refentry id="function.ucfirst">
<refnamediv>
<refname>ucfirst</refname> <refpurpose>Make a string's first character uppercase</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>string <function>ucfirst</function></funcdef>
<paramdef>string <parameter>str</parameter></paramdef>
</funcsynopsis>
<para>
Capitalizes the first character of <parameter>str</parameter> if
that character is alphabetic.
<para>
Note that 'alphabetic' is determined by the current locale. For
instance, in the default "C" locale characters such as umlaut-a
(<28>) will not be converted.
<para>
See also <function>strtoupper</function> and
<function>strtolower</function>.
</refsect1>
</refentry>
<refentry id="function.ucwords">
<refnamediv>
<refname>ucwords</refname> <refpurpose>Uppercase the first character of each word in a string</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>string <function>ucwords</function></funcdef>
<paramdef>string <parameter>str</parameter></paramdef>
</funcsynopsis>
<simpara>
Capitalizes the first character of each word in <parameter>str</parameter> if
that character is alphabetic.
<para>
See also <function>strtoupper</function>,
<function>strtolower</function> and <function>ucfirst</function>.
</refsect1>
</refentry>
</reference>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
sgml-parent-document:nil
sgml-default-dtd-file:"../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
-->