(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)
mb_strpos — 文字列の中に指定した文字列が最初に現れる位置を見つける
$haystack,$needle,$offset = 0,$encoding = null
haystack の中で
needle 文字列が最初に現れる位置を見つけます。
マルチバイト文字列に正しくマッチするように strpos() を拡張したもので、 最初の 1 文字目の位置が 0 、2 文字目の文字が 1 というようになります。
文字列 haystack の中で
needle が最初に現れる位置を、
バイト位置ではなく、0 から数えた文字位置で返します。
needle が見付からなかった場合、false
を返します。
offset が haystack
の長さより大きい場合、
ValueError がスローされます。
| バージョン | 説明 |
|---|---|
| 8.0.0 |
needle は、空の文字列も受け入れるようになりました。
|
| 8.0.0 |
encoding は、nullable になりました。
|
| 7.1.0 |
負の offset をサポートするようになりました。
|
例1 mb_strpos() はバイトオフセットではなく文字オフセットを返す
<?php
// "🐘" は 4 バイトだが 1 文字、"é" は 2 バイトだが 1 文字
$str = "🐘H🐘é";
var_dump(mb_strpos($str, "é")); // バイト位置 9 ではなく文字位置 3
var_dump(mb_strpos($str, "🐘", 1)); // 最初の "🐘" を飛ばして文字位置 2
?>上の例の出力は以下となります。
int(3) int(2)