PHP Conference Nagoya 2025

grapheme_substr

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

grapheme_substr部分文字列を返す

説明

手続き型

grapheme_substr(string $string, int $offset, ?int $length = null): string|false

部分文字列を返します。

パラメータ

string

入力文字列。正しい形式の UTF-8 でなければなりません。

offset

デフォルトの書記素単位での開始位置。 offset がゼロ以上である場合は、stringoffset 番目の位置から始まる文字列を返します。位置はゼロから数え始めます。 offset が負の場合は、文字列の末尾から数えて offset 番目 (書記素単位) の位置以降の文字列を返します。

length

長さを書記素単位で指定します。 length が正の値の場合は、offset から数えて最大 length 文字までの文字列を返します (文字列全体の長さによって変わります)。 length が負の値の場合は、文字列の末尾から多くの書記素が削除されます (offset が負の場合にはまず開始位置を算出してから行います)。 offset がこの削除された場所以降になる場合は、空文字列を返します。

戻り値

string の部分文字列を返します。 失敗した場合に false を返します

変更履歴

バージョン 説明
8.0.0 この関数は、offset が文字列境界の範囲外になる場合を一貫した形で扱うようになりました。 これより前のバージョンでは、 場合によっては空文字列ではなく false を返すことがありました。

例1 grapheme_substr() の例

<?php

$char_a_ring_nfd
= "a\xCC\x8A"; // 'LATIN SMALL LETTER A WITH RING ABOVE' (U+00E5) normalization form "D"
$char_o_diaeresis_nfd = "o\xCC\x88"; // 'LATIN SMALL LETTER O WITH DIAERESIS' (U+00F6) normalization form "D"

print urlencode(grapheme_substr( "ao" . $char_a_ring_nfd . "bc" . $char_o_diaeresis_nfd . "O", 2, -1 ));
?>

上の例の出力は以下となります。

a%CC%8Abco%CC%88

参考

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top