1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204
|
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision: 331556 $ -->
<refentry xml:id="function.mb-ereg-replace-callback" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>mb_ereg_replace_callback</refname>
<refpurpose>Perform a regular expresssion seach and replace with multibyte support using a callback
</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>string</type><methodname>mb_ereg_replace_callback</methodname>
<methodparam><type>string</type><parameter>pattern</parameter></methodparam>
<methodparam><type>callable</type><parameter>callback</parameter></methodparam>
<methodparam><type>string</type><parameter>string</parameter></methodparam>
<methodparam choice="opt"><type>string</type><parameter>option</parameter><initializer>"msr"</initializer></methodparam>
</methodsynopsis>
<para>
Scans <parameter>string</parameter> for matches to
<parameter>pattern</parameter>, then replaces the matched text
with the output of <parameter>callback</parameter> function.
</para>
<para>
The behavior of this function is almost identical to <function>mb_ereg_replace</function>,
except for the fact that instead of
<parameter>replacement</parameter> parameter, one should specify a
<parameter>callback</parameter>.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>pattern</parameter></term>
<listitem>
<para>
The regular expression pattern.
</para>
<para>
Multibyte characters may be used in <parameter>pattern</parameter>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>callback</parameter></term>
<listitem>
<para>
A callback that will be called and passed an array of matched elements
in the <parameter>subject</parameter> string. The callback should
return the replacement string.
</para>
<para>
You'll often need the <parameter>callback</parameter> function
for a <function>mb_ereg_replace_callback</function> in just one place.
In this case you can use an
<link linkend="functions.anonymous">anonymous function</link> to
declare the callback within the call to
<function>mb_ereg_replace_callback</function>. By doing it this way
you have all information for the call in one place and do not
clutter the function namespace with a callback function's name
not used anywhere else.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>string</parameter></term>
<listitem>
<para>
The <type>string</type> being checked.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>option</parameter></term>
<listitem>
<para>
Matching condition can be set by <parameter>option</parameter>
parameter. If <literal>i</literal> is specified for this
parameter, the case will be ignored. If <literal>x</literal> is
specified, white space will be ignored. If <literal>m</literal>
is specified, match will be executed in multiline mode and line
break will be included in '.'. If <literal>p</literal> is
specified, match will be executed in POSIX mode, line break
will be considered as normal character. Note that <literal>e</literal>
cannot be used for <function>mb_ereg_replace_callback</function>.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
The resultant <type>string</type> on success, or &false; on error.
</para>
</refsect1>
<refsect1 role="notes">
&reftitle.notes;
¬e.mbstring.encoding.internal;
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title><function>mb_ereg_replace_callback</function> example</title>
<programlisting role="php">
<![CDATA[
<?php
// this text was used in 2002
// we want to get this up to date for 2003
$text = "April fools day is 04/01/2002\n";
$text.= "Last christmas was 12/24/2001\n";
// the callback function
function next_year($matches)
{
// as usual: $matches[0] is the complete match
// $matches[1] the match for the first subpattern
// enclosed in '(...)' and so on
return $matches[1].($matches[2]+1);
}
echo mb_ereg_replace_callback(
"(\d{2}/\d{2}/)(\d{4})",
"next_year",
$text);
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
April fools day is 04/01/2003
Last christmas was 12/24/2002
]]>
</screen>
</example>
</para>
<para>
<example>
<title><function>mb_ereg_replace_callback</function> using anonymous function
supported in PHP 5.3.0 or later</title>
<programlisting role="php">
<![CDATA[
<?php
// this text was used in 2002
// we want to get this up to date for 2003
$text = "April fools day is 04/01/2002\n";
$text.= "Last christmas was 12/24/2001\n";
echo mb_ereg_replace_callback(
"(\d{2}/\d{2}/)(\d{4})",
function ($matches) {
return $matches[1].($matches[2]+1);
},
$text);
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>mb_regex_encoding</function></member>
<member><function>mb_ereg_replace</function></member>
<member><link linkend="functions.anonymous">Anonymous functions</link></member>
<member>&seealso.callback;</member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
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
-->
|