[PHP-doc 615] Re: mb_strpos

TAKAGI Masahiro matakagi @ osk2.3web.ne.jp
2006年 2月 27日 (月) 12:38:30 JST


高木です。

At Fri, 24 Feb 2006 14:48:26 +0900,
Tadashi Jokagi wrote:
> 
> http://php.net/mb_strpos
> 
> > encoding が省略された場合、 内部文字エンコーディングが使用されます。
> > strpos() が英字のみを受けつけるのに対して、mb_strpos() は needle に 
> > string を 指定可能です。
> 
このへん (およびその周辺) を読み直していて思ったのですが、翻訳がわかり
にくいとかいう以前の問題があるようです。

======================================================================
1) mb_strpos() の日本語マニュアル (*1) に嘘が書かれていること
======================================================================
最初に上鍵さんが指摘された点は、英語版 (*2) では以下のようになっていま
す。

> mb_strrpos()  accepts string for needle where strrpos()  accepts
> only character.

ここでは、mb_strrpos() と strrpos() の関係について説明されています。
これを日本語に翻訳する際に、なぜかこれらが

> > strpos() が英字のみを受けつけるのに対して、mb_strpos() は needle に 

のように mb_strpos() と strpos() に置き換えられてしまっているようです。
ところが、上の文は mb_strpos() とstrpos() については成立しません。

strpos() は、もともと needle に複数文字を指定することができます。これ
はマニュアルにも明記されていますし (*5)(*6)、以下のようなスクリプトで
確認することができます。

<?php
//            0123456789
$theString = 'AAAABAAAAB';

print strpos($theString, 'A') . "\n";     // => 0
print mb_strpos($theString, 'A') . "\n";  // => 0
print strpos($theString, 'AB') . "\n";    // => 3
print mb_strpos($theString, 'AB') . "\n"; // => 3
?>

======================================================================
2) mb_strpos() の英語マニュアル (*2) の記述が少しおかしいこと
======================================================================
英語版マニュアルの
> mb_strrpos()  accepts string for needle where strrpos()  accepts
only character.
という説明は、そもそも mb_strpos() の項目 (*2) に存在すべきものなので
しょうか? mb_strrpos() の英語版マニュアル (*4) にもまったく同じ内容が
記述されています。これをそのままコピーし、本来は不要な説明が残ったまま
になっているのではないでしょうか?

……ということで、時間ができたときにでも 2) について
phpdoc @ lists.php.net でちょっと突っ込んでみようかと思います。

(参考)
 (*1) http://www.php.net/manual/ja/function.mb-strpos.php
 (*2) http://www.php.net/manual/en/function.mb-strpos.php
 (*3) http://www.php.net/manual/ja/function.mb-strrpos.php
 (*4) http://www.php.net/manual/en/function.mb-strrpos.php
 (*5) http://www.php.net/manual/ja/function.strpos.php
 (*6) http://www.php.net/manual/en/function.strpos.php

-- 
高木 正弘 mailto:matakagi @ osk2.3web.ne.jp


PHP-doc メーリングリストの案内