【PHP8.x】iconv_substr関数の使い方

作成日: 更新日:

iconv_substr関数は、指定された文字エンコーディングを考慮して、文字列の一部を正確に切り出す関数です。この関数は、特に日本語のようなマルチバイト文字を含む文字列を扱う際に非常に有用です。PHPの標準的なsubstr関数がバイト単位で文字列を処理するのに対し、iconv_substr関数は文字エンコーディングを指定することで、指定されたエンコーディングにおける文字単位で処理を行います。そのため、マルチバイト文字を途中で切断してしまい、文字化けや不完全な文字列が生成されるといった問題を避けることができます。

この関数は、対象の文字列、切り出しを開始するオフセット(位置)、そしてオプションで切り出す文字の長さを引数として受け取ります。さらに、文字列のエンコーディングを指定する引数も持ち、これにより、例えばUTF-8でエンコードされた文字列の3文字目から5文字を正確に切り出すといった操作が可能になります。オフセットは0から始まり、正の値を指定すると文字列の先頭から数え、負の値を指定すると文字列の末尾から数えます。処理が成功した場合は切り出された部分文字列を返し、失敗した場合はブール値の false を返します。Webアプリケーション開発などで、ユーザー入力の整形、表示のために文字列を安全に短縮する際や、特定の文字数でテキストを切り分ける必要がある場合などに活用されます。

基本的な使い方

構文(syntax)

<?php
$originalString = "こんにちは世界";
$startOffset = 3;
$subLength = 2;
$charEncoding = "UTF-8";

$subString = iconv_substr($originalString, $startOffset, $subLength, $charEncoding);
?>

引数(parameters)

string $string, int $offset, ?int $length = NULL, ?string $encoding = NULL

  • string $string: 対象となる文字列
  • int $offset: 切り出す開始位置を示す整数 (0から始まります)
  • ?int $length = NULL: 切り出す長さを指定する整数。指定しない場合は、開始位置から文字列の最後までを切り出します。
  • ?string $encoding = NULL: 文字列のエンコーディングを指定する文字列。指定しない場合は、内部エンコーディングが使用されます。

戻り値(return)

string|false

指定された位置から指定された長さの文字列を返します。指定された位置または長さが無効な場合は false を返します。

【PHP8.x】iconv_substr関数の使い方 | いっしー@Webエンジニア