1
0
mirror of https://github.com/php/doc-ja.git synced 2026-03-24 07:02:08 +01:00
Files
archived-doc-ja/reference/mbstring/overloading.xml
2025-11-16 12:17:04 +09:00

145 lines
5.0 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 3f1dbc451b313fb1ec8058f24c1beccf55fce316 Maintainer: takagi Status: ready -->
<!-- CREDITS: hirokawa -->
<chapter xml:id="mbstring.overload" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>
関数のオーバーロード機能
</title>
&warn.deprecated.feature-7-2-0.removed-8-0-0;
<para>
PHP アプリケーションの多くは、英語等のシングルバイトの言語用に設計されており、
日本語を含むマルチバイト文字列を扱う場合には問題を生じる場合があります。
<function>substr</function> 等の PHP の文字列関数の多くは、
マルチバイト文字列に対応していません。
</para>
<para>
mbstring では、
対応するマルチバイト文字対応版の関数で既存の PHP 関数を
オーバーロードする機能をサポートします。関数のオーバーロードを行うと、例えば
<function>substr</function> を PHP スクリプトでコールした場合に、
<function>mb_substr</function> が代わりにコールされるようになります。
これにより、マルチバイト文字に対応しないアプリケーションの移植が容易となります。
</para>
<para>
関数オーバーロードを使用するには、&php.ini;
<literal>mbstring.func_overload</literal> ディレクティブに正の値を指定します。
これは、オーバーロードされる関数の種類を指定するビットマスクの組み合わせとなります。
<function>mail</function> 関数をオーバーロードするには 1 を指定します。
2 は文字列関数、4 は正規表現関数を表します。つまり、例えば
7 を指定すると、メール関数、文字列関数および正規表現関数が
オーバーロードされることになります。オーバーロードされる関数の一覧を以下に示します。
<table>
<title>オーバーロードされる関数</title>
<tgroup cols="3">
<thead>
<row>
<entry>mbstring.func_overload の値</entry>
<entry>元の関数</entry>
<entry>オーバーロードする関数</entry>
</row>
</thead>
<tbody>
<row>
<entry>1</entry>
<entry><function>mail</function></entry>
<entry><function>mb_send_mail</function></entry>
</row>
<row>
<entry>2</entry>
<entry><function>strlen</function></entry>
<entry><function>mb_strlen</function></entry>
</row>
<row>
<entry>2</entry>
<entry><function>strpos</function></entry>
<entry><function>mb_strpos</function></entry>
</row>
<row>
<entry>2</entry>
<entry><function>strrpos</function></entry>
<entry><function>mb_strrpos</function></entry>
</row>
<row>
<entry>2</entry>
<entry><function>substr</function></entry>
<entry><function>mb_substr</function></entry>
</row>
<row>
<entry>2</entry>
<entry><function>strtolower</function></entry>
<entry><function>mb_strtolower</function></entry>
</row>
<row>
<entry>2</entry>
<entry><function>strtoupper</function></entry>
<entry><function>mb_strtoupper</function></entry>
</row>
<row>
<entry>2</entry>
<entry><function>stripos</function></entry>
<entry><function>mb_stripos</function></entry>
</row>
<row>
<entry>2</entry>
<entry><function>strripos</function></entry>
<entry><function>mb_strripos</function></entry>
</row>
<row>
<entry>2</entry>
<entry><function>strstr</function></entry>
<entry><function>mb_strstr</function></entry>
</row>
<row>
<entry>2</entry>
<entry><function>stristr</function></entry>
<entry><function>mb_stristr</function></entry>
</row>
<row>
<entry>2</entry>
<entry><function>strrchr</function></entry>
<entry><function>mb_strrchr</function></entry>
</row>
<row>
<entry>2</entry>
<entry><function>substr_count</function></entry>
<entry><function>mb_substr_count</function></entry>
</row>
</tbody>
</tgroup>
</table>
</para>
<note>
<para>
ディレクトリ単位の設定でこのオプションを使用することは推奨されません。
これは、実際の運用環境ではまだ安定性が確認されておらず、
予期しない結果をもたらす可能性があるためです。
</para>
</note>
</chapter>
<!-- 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
-->