PHP

PHP 文字列に特定の文字が含まれる場合に開始位置を取得するstrpos,mb_strposの使い方

2015/08/30

文字列に特定の文字が含まれる場合に開始位置を取得する方法です。

strpos」「mb_strpos」を使用することで、文字列に特定の文字が含まれる場合に開始位置を取得することが出来ます。特定の文字が含まれていない場合はfalseを返します。
strpos」も「mb_strpos」も基本的に記述方法は同じですが「mb_strpos」は第四引数に文字コードを指定することが出来ます。

strpos(値, 含まれているか調べる文字, 何文字目からを対象とするか);
mb_strpos(値, 含まれているか調べる文字, 何文字目からを対象とするか, 文字コード);

第一、第二引数のみの場合

第一、第二引数のみの場合は、値の全ての文字を対象に、特定の文字が含まれているかを調べて、含まれていれば開始位置を返し、含まれていなければ「false」を返します。ちなみに第二引数は必須なので、指定しないとエラーになります。(指定しないとstrpos使う意味が無いですけど)

下記例では、変数xには「うえ」が含まれるので、0から数えて2文字目の「2」が変数yに代入され、「ウエ」は含まれていないのでfalseが変数zに代入されます。

<?
    $x = "あいうえお";
    $y = mb_strpos($x, "うえ"); // 0から数えるので、0,1,2,3,4 → あ,い,う,え,お 「うえ」が開始される 2 を返す
    $z = mb_strpos($x, "ウエ"); // 「ウエ」が含まれていないのでfalseを返す

    var_dump($y);
    echo "<br>\n";

    var_dump($z);
    echo "<br>\n";
?>

» 実行結果
 

第三引数を指定する場合

第三引数で、何文字目以降を調べるかの指定ができます。

下記例では、変数xの0から数えて3文字目の「え」以降には「お」が含まれているため「4」が変数yに代入され、変数xの0から数えて5文字目の「か」以降には「お」が含まれていないためfalseが変数zに代入されます。

<?php
    $x = "あいうえおかきくけこ";
    $y = mb_strpos($x, "お", 3); // 0から数えて3文字目の「え」以降に「お」が含まれているため、開始される 4 を返す
    $z = mb_strpos($x, "お", 5); // 0から数えて5文字目の「か」以降に「お」が含まれていないため、false を返す

    var_dump($y);
    echo "<br>\n";

    var_dump($z);
    echo "<br>\n";
?>

» 実行結果
 

最後に・・・

mb_srtposを使用する際、htmlの文字コードと値の文字コードが違う場合は、第四引数に「値の文字コード」を指定しましょう。表示する際は「mb_convert_encoding」等でエンコードして文字化けしないように気をつけましょう。

-PHP