【PHP入門】文字列メソッドを使おう!検索、置換など

投稿日: 作成:   更新:

PHPで文字列メソッド(関数)を使ってみましょう。

PHPには色々と文字列用の便利なメソッドが用意されています。
今回はこの一部を簡単に紹介したいと思います。

ソースコードを一気に覚える必要はありませんので、メソッドでどんな文字列操作ができるか、さらっと読んでもらえれば良いかと思います。

途中、メソッド名の頭に「mb_」がついたものが出てきますが、これはマルチバイト文字対応メソッドで日本語や各国で扱えるようにUTF-8エンコードに対応した拡張メソッドです。マルチバイト文字を扱うには php.ini でmbstringの設定が必要になります。

文字列の長さ(strlen、mb_strlen

PHPで文字の長さを表示するには、strlrn、mb_strlen関数を使用します。
この2つの関数は何が違うのかと言いますと、長さを測る文字に日本語が含まれているかの違いがあります。

strlen

strlenメソッドはバイト数を測ります。
試しに文字列「banana」の長さを測ってみます。

<?php

$value = "banana";

echo "{$value}の文字の長さは". strlen($value) . "です。";

?>

実行結果:

6と表示されました。
英語であれば単純に「banana」は6文字と表示されます。

次に、日本語の文字「バナナ」をstrlenメソッドで測ってみたいと思います。

<?php 

$value = "バナナ";

echo "{$value}の文字の長さは". strlen($value) . "です。";

?>

実行結果:

どうでしょう。「9」と表示されましたね。

UTF-8の日本語は1文字3バイトで表示されますので「3文字 × 3バイト = 9」と表示されます。(PHPのエンコーディングが「UTF-8」で指定されている場合)

では、日本語の文字数を取得するにはどうしたら良いのでしょうか。
そのために「mb_」から始まるマルチバイト文字対応メソッドがあります。

mb_strlen

日本語文字数をmb_strlenメソッドを使用して表示してみます。

<?php

$value = "バナナ";

echo "{$value}の文字の長さは". mb_strlen($value) . "です。";

?>

実行結果:

「3」文字が取得できました。

文字の一部を取得substr、mb_substr

一部の文字を取得するにはsubstr、mb_substrメソッドを使用します。
こちらもstrlenメソッドと同様に日本語対応メソッドがあります。

substr

「enjoy PHP!」の中から「PHP」を抜き出してみたいと思います。
文字先頭の「e」を0として、6の「P」から3文字取得します。

<?php

$value = "enjoy PHP!";

// 「PHP」を抜き出す
echo substr($value, 6, 3);

?>

実行結果:

「PHP」が取得できました。

mb_substr

日本語文字が含まれている場合はmb_substrメソッドを使用しましょう。

文字列から「楽しもう!」部分を抜き出してみます。

<?php

$value = "PHPを楽しもう!";

// 「楽しもう!」を抜き出す
echo mb_substr($value, 4, 5);

?>

実行結果:

「楽しもう!」が抜き出せました。

ちなみにsubstrメソッドを使用すると次のように文字化けしますので注意ください。

特に意図がないのであれば、文字の抜き出しはmb_substrメソッドで統一しておく方が良いです。

文字の置換str_replace

文字の置換するにはstr_replaceメソッドを使用します。このメソッドはマルチバイト文字は気にせず置換できます。

試しに「イチゴ」を「バナナ」に置換してみたいと思います。

<?php 

$value = "イチゴが食べたい。";

echo str_replace("イチゴ", "バナナ", $value);

?>

実行結果:

「バナナが食べたい。」に文字置換できました。

文字列を検索(preg_match)

文字列内の検索にはpreg_matchメソッドを使用します。

試しに「バナナ」を文字列検索してみましょう。
このメソッドは正規表現を指定して対象文字が含まれているかチェックするメソッドですので、検索対象文字(第一引数)には「/」で囲んであげる必要がありますので「/バナナ/」を指定します。

<?php 

$value = "バナナが入った箱";

if (preg_match("/バナナ/", $value)) {
    echo "バナナを見つけた!";
} else {
    echo "バナナが見つからなかった・・・。";
}

?>

実行結果:

「バナナ」が見つかりましたね。

次に正規表現を使って文字列検索してみます。
数値が入っているかを判定するソースコードです。数値は正規表現で「[0-9]」と表します。この例では数値が1つでも入っていればOKとなります。

<?php 

$value = "12345の順番で並んでください";

if (preg_match("/[0-9]/", $value)) {
    echo "数値を見つけた!";
} else {
    echo "数値が見つからない・・・。";
}

?>

実行結果:

数値を見つけられました。

大文字変換(strtoupper、mb_strtoupper

英語文字を大文字にするにはstrtoiupperメソッドを使用します。
こちらもマルチバイト文字対応メソッドが用意されています。

「enjoy php!」を大文字変換してみます。

<?php 

$value = "enjoy php!";

echo strtoupper($value);

?>

実行結果:

「ENJOY PHP!」に大文字変換されました。

日本語が含まれている場合はmb_strtoupperメソッドを使用します。

<?php 

$value = "phpを楽しもう!";

echo mb_strtoupper($value);

?>

実行結果:

「php」部分だけが「PHP」に大文字変換されました。

小文字変換(strtolower、mb_strtolower

大文字変換の反対で、英語文字を小文字にするにはstrtolowerメソッドを使用します。

<?php 

$value = "ENJOY PHP!";

echo strtolower($value);

?>

実行結果:

「enjoy php!」に小文字変換されました。

<?php 

$value = "PHPを楽しもう!";

echo mb_strtolower($value);

?>

実行結果:

「PHP」の部分だけが小文字変換されました。

まとめ

今回はPHPの文字列メソッドについて、一部ではありますが次の内容を解説しました。

  • 文字列の長さ(strlen、mb_strlen)
  • 文字の一部を取得(substr、mb_substr)
  • 文字の置換str_replace
  • 文字列を検索(preg_match)
  • 大文字変換(strtoupper、mb_strtoupper
  • 小文字変換(strtolower、mb_strtolower

色々とメソッドを紹介しましたが、一気に覚える必要はありませんので何の文字列操作ができるのか理解できてればOKです。

実際にソースコードを書くときはこのページを見に来ていただけたら幸いです。

日本語(マルチバイト文字)ですが、特に意図がなければ「mb_」のメソッドを使うように統一した方が良いでしょう。


プログラミングスクールをお探しの方へ

プログラミング学習を挫折せずに続けて成功できる人は

「目的目標を明確にすること」
「質問・相談できる環境を作ること」
「自己解決スキルを身に着けること」

この3つを大切にしてると思います。

ただ漠然とプログラミング学習をしているだけでは
すぐに身に付きませんので、プログラミングスクールがおすすめです。

  • テックキャンプ
    本気でIT業界に転職したい方におすすめです。
    転職できなかったら全額返金があります。
  • DMM WEBCAMP
    国から認定されているスクールです。
    やむなく離職中の方など、条件を満たしている方は教育訓練給付金が支給されます。
  • TechAcademy
    1週間の無料体験があります。
    気軽にスクールを体験したい方向けです。