PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHPのiconv_strpos()関数とは?文字列内で最初に出現する位置を検索する方法

PHPには、iconv_strpos()という組み込み関数が用意されており、指定した文字列(干し草の山)の中から、特定の文字や部分文字列(針)が最初に出現する位置を検索することができます。マルチバイト文字を正確に扱えるため、日本語などのマルチバイト文字列を処理する際にも便利な関数です。

構文

string iconv_strpos(string $haystack, string $needle, int $offset, string $encoding)

ポイント: strpos()と同様に、iconv_strpos()の戻り値は「針(needle)」が見つかった位置までのバイト数ではなく、その前に存在する文字数です。文字数は、指定された文字エンコーディングに基づいてカウントされます。

パラメータ

iconv_strpos()関数は、以下の4つのパラメータを受け取ります。

  • $haystack: 検索対象となる全体の文字列を指定します。

  • $needle: 全体の文字列から検索したい部分文字列を指定します。

  • $offset: 任意のパラメータです。検索を開始する位置を指定できます。負の値を指定した場合は、文字列の末尾から数えた位置から検索が始まります。

  • $encoding: このパラメータが省略された場合、またはnullが指定された場合は、iconv.internal_encoding の設定値がエンコーディングとして使用されます。

戻り値

iconv_strpos()関数は、干し草の山($haystack)の中で針($needle)が最初に出現する位置を数値で返します。針が見つからなかった場合は、falseを返します。

補足: PHP 8.0以降では$encodingパラメータがnullable(null許容)となり、PHP 7.1以降では負のオフセット値がサポートされています。

サンプルコード 1

<?php
   # UTF-8の文字列
   $int = iconv_strpos("hello world!", "hello", 0, "UTF-8");
   // 先頭からの文字数を返します
   var_dump($int);
?>

出力結果

int(0)

この例では、「hello」が文字列の先頭にあるため、位置「0」が返されます。

サンプルコード 2

<?php
   # UTF-8の文字列
   $int = iconv_strpos("hello world!", "world", 0, "UTF-8");

   // 先頭からの文字数を返します
   var_dump($int);
?>

出力結果

int(6)

この例では、「world」の先頭の「w」が6番目の文字(インデックス6)に位置しているため、「6」が返されます。バイト単位ではなく文字数でカウントされる点が、iconv_strpos()の大きな特徴です。

  1. PHPのstrripos()関数とは?文字列の最後の出現位置を取得する方法

    strripos()関数は、ある文字列の中で別の文字列が最後に出現する位置を検索するためのPHPの組み込み関数です。 注意 − この関数は大文字と小文字を区別しません(case-insensitive)。大文字小文字を区別して検索したい場合は、strrpos()関数を使用してください。 構文 strripos(str, find, begin) パラメータ str − 検索対象となる文字列。必須。 find − 検索したい文字列。必須。 begin − 検索を開始する位置。省略可能。 戻り値 strripos()関数は、文字列内で指定した文字列が最後に出現する位置を数値で返します。文字

  2. C#で文字列の先頭10文字を取得する方法

    C#で文字列の先頭(最初)の10文字を取り出したい場合は、Substring()メソッドを使うのが最も簡単です。この記事では、基本的な使い方からコード例、注意点までわかりやすく解説します。Substring()メソッドとはSubstring()メソッドは、文字列の一部を切り出して新しい文字列として返すメソッドです。第1引数に「開始位置(インデックス)」、第2引数に「取得する文字数」を指定します。サンプル文字列の準備まず、次のような文字列を用意します。string str = Cricket is a religion in India!;先頭10文字を取得する方法先頭から10文字を取得するには