【PHP】これで分かる関数! – 文字列その3 –

PHP

更新履歴

更新日更新者更新内容
2021/8/18JJI・サンプルプログラムの実行結果に画面の画像を追加

str_replace

str_replace()関数を使用したサンプルプログラムです。

<?php
    // 引数の値への厳密な型付け
    declare(strict_types = 1);

    echo "【PHP】関数<br>\n";
    echo "文字列関数:str_replace<br>\n";

    // 文字列の置換
    echo ":" . str_replace("リンゴ", "Apple", "ばななのリンゴはおいしい") . ":<br>\n";

    // 配列も置換できる
    $src_strs = ["apple", "バナナ", "ブドウ"];
    $rep_strs = ["リンゴ", "banana", "grepe"];
    $target_strs = [
        "ばななの実はappleではない",
        "おさるの好きなものはバナナだ",
        "このガムはブドウ味だ、ブドウ味に違いない" ];
    
    $ret_strs = str_replace($src_strs, $rep_strs, $target_strs);

    foreach($ret_strs as $var) {
        echo ":" . $var . ":<br>\n";
    }
?>

実行結果は次の通りです。

・画面

・HTML

【PHP】関数<br>
文字列関数:str_replace<br>
:ばななのAppleはおいしい:<br>
:ばななの実はリンゴではない:<br>
:おさるの好きなものはbananaだ:<br>
:このガムはgrepe味だ、grepe味に違いない:<br>

strcmp、strncmp

strcmp()、strncmp()関数を使用したサンプルプログラムです。

<?php
    // 引数の値への厳密な型付け
    declare(strict_types = 1);

    echo "【PHP】関数<br>\n";
    echo "文字列関数:strcmp、strncmp<br>\n";

    $str1 = "a"; $str2 = "b";
    echo "$str1 と $str2 をstrcmpで比較:" . strcmp($str1, $str2) . "<br>\n";

    $str1 = "abcde"; $str2 = "abcc";
    echo "$str1 と $str2 をstrcmpで比較:" . strcmp($str1, $str2) . "<br>\n";

    $str1 = "bcd"; $str2 = "bcd";
    echo "$str1 と $str2 をstrcmpで比較:" . strcmp($str1, $str2) . "<br>\n";

    $str1 = "あいう"; $str2 = "あい";
    echo "$str1 と $str2 をstrcmpで比較:" . strcmp($str1, $str2) . "<br>\n";

    $str1 = "abcde"; $str2 = "abcc";
    echo "$str1 と $str2 をstrncmpで先頭から4文字比較:" . strncmp($str1, $str2, 4) . "<br>\n";

    $str1 = "abcde"; $str2 = "abcc";
    echo "$str1 と $str2 をstrncmpで先頭から3文字比較:" . strncmp($str1, $str2, 3) . "<br>\n";

    $str1 = "あいうおか"; $str2 = "あいうえお";
    echo "$str1 と $str2 をstrncmpで先頭から3文字比較:" . strncmp($str1, $str2, 3) . "<br>\n";

    // 結果は0以外になるはずであるが、0、正しく比較されていない
    $str1 = "あいうおか"; $str2 = "あいうえお";
    echo "$str1 と $str2 をstrncmpで先頭から4文字比較:" . strncmp($str1, $str2, 4) . "<br>\n";
?>

実行結果は次の通りです。

・画面

・HTML

【PHP】関数<br>
文字列関数:strcmp、strncmp<br>
a と b をstrcmpで比較:-1<br>
abcde と abcc をstrcmpで比較:1<br>
bcd と bcd をstrcmpで比較:0<br>
あいう と あい をstrcmpで比較:3<br>
abcde と abcc をstrncmpで先頭から4文字比較:1<br>
abcde と abcc をstrncmpで先頭から3文字比較:0<br>
あいうおか と あいうえお をstrncmpで先頭から3文字比較:0<br>
あいうおか と あいうえお をstrncmpで先頭から4文字比較:1<br>

strlen

strlen()関数を使用したサンプルプログラムです。
PHPの文字コードはUTF-8を使用しているため、日本語は1文字3バイト換算で計算されます。

<?php
    // 引数の値への厳密な型付け
    declare(strict_types = 1);

    echo "【PHP】関数<br>\n";
    echo "文字列関数:strlen<br>\n";

    echo "\"\":" . strlen("") . ":<br>\n";
    echo "abcde:" . strlen("abcde") . ":<br>\n";
    // マルチバイトの場合、文字数ではなく、バイト数になることに注意
    // UTF-8のため、日本語は1文字3バイトの換算
    echo "文字列の長さ:" . strlen("文字列の長さ") . ":<br>\n";
?>

実行結果は次の通りです。

・画面

・HTML

【PHP】関数<br>
文字列関数:strlen<br>
"":0:<br>
abcde:5:<br>
文字列の長さ:18:<br>

strpos

strpos()関数を使用したサンプルプログラムです。

<?php
    // 引数の値への厳密な型付け
    declare(strict_types = 1);

    echo "【PHP】関数<br>\n";
    echo "文字列関数:strpos<br>\n";

    exec_strpos("abcdefghi", "c", 0);
    exec_strpos("abcdefghi", "c", 2);
    exec_strpos("abcdefghi", "c", 3);
    exec_strpos("abcdefghi", "A", 0);
    exec_strpos("abcdefghi", "def", 0);

    exec_strpos("ハローワールド", "わー", 0);
    exec_strpos("ハローワールド", "ワー", 0);
    exec_strpos("ハローワールド", "ロ", 0);

    function exec_strpos(string $var, string $src, int $pos) :void {
        if ($pos === 0) {
            echo "${var}で${src}の表示位置:" . strpos($var, $src) . ":<br>\n";
        } else {
            echo "${var}で${src}の表示位置、開始位置:${pos}:";
            echo strpos($var, $src, $pos) . ":<br>\n";
        }
    }
?>

実行結果は次の通りです。

・画面

・HTML

【PHP】関数<br>
文字列関数:strpos<br>
abcdefghiでcの表示位置:2:<br>
abcdefghiでcの表示位置、開始位置:2:2:<br>
abcdefghiでcの表示位置、開始位置:3::<br>
abcdefghiでAの表示位置::<br>
abcdefghiでdefの表示位置:3:<br>
ハローワールドでわーの表示位置::<br>
ハローワールドでワーの表示位置:9:<br>
ハローワールドでロの表示位置:3:<br>

strstr

strstr()関数を使用したサンプルプログラムです。

<?php
    // 引数の値への厳密な型付け
    declare(strict_types = 1);

    echo "【PHP】関数<br>\n";
    echo "文字列関数:strstr<br>\n";

    exec_strstr("abcdefghi", "c");
    exec_strstr("abcdefghi", "c", true);
    exec_strstr("abcdefghi", "A");
    exec_strstr("abcdefghi", "def");

    exec_strstr("ハローワールド", "わー");
    exec_strstr("ハローワールド", "ワー");
    exec_strstr("ハローワールド", "ロ", true);

    function exec_strstr(string $var, string $src, bool $flg = false) :void {
        echo "対象文字列:${var}: 検索文字列:${src}:";
        if($flg === true) {
            echo " :検索文字列の前:" . strstr($var, $src, $flg) . ":<br>\n";
            return ;
        }

        echo " :検索文字列の後:" . strstr($var, $src) . ":<br>\n";
    }
?>

実行結果は次の通りです。

・画面

・HTML

【PHP】関数<br>
文字列関数:strstr<br>
対象文字列:abcdefghi: 検索文字列:c: :検索文字列の後:cdefghi:<br>
対象文字列:abcdefghi: 検索文字列:c: :検索文字列の前:ab:<br>
対象文字列:abcdefghi: 検索文字列:A: :検索文字列の後::<br>
対象文字列:abcdefghi: 検索文字列:def: :検索文字列の後:defghi:<br>
対象文字列:ハローワールド: 検索文字列:わー: :検索文字列の後::<br>
対象文字列:ハローワールド: 検索文字列:ワー: :検索文字列の後:ワールド:<br>
対象文字列:ハローワールド: 検索文字列:ロ: :検索文字列の前:ハ:<br>

コメント