【基礎知識】PHPのビルトイン関数でよく使うものは覚えておこう(PHP8技術者認定初級試験)

こんにちは、穂苅と申します。
このコラムでは、私が PHP8 技術者認定初級試験のための公式問題集(PHP8 技術者認定初級試験公式問題集)で学習した内容やポイントを取り上げて解説をしていくものです。
P187〜193 のChapter 19「ビルトイン関数」を学習してみました。

ビルトイン関数とは?

今回のテーマである「ビルトイン関数」とは、built-in、つまり組み込み関数のことです。最初からプログラム言語に用意されており、誰でも自由に使うことができるためビルトイン関数という名称になっています。プログラミングにおける「関数」はとても重要な要素ですが、要するに何かの処理をするまとまりのことで、これに名前をつけて使いやすくしているのです。
関数に関しては、ビルトイン関数とユーザー定義関数があります。ユーザー定義関数は、自分で関数を作って使うことができるというもので、うまくこの2 つを使い分けてシステムを作っていくことになります。

ビルトインされているということは、よく使われる処理です。これらがあらかじめ用意されているため、しっかり扱うことができると効率的にプログラミングができるようになります。
ビルトイン関数に関しては、PHP マニュアルにもありますので、興味ある方はご覧ください。
(参考:内部(ビルトイン)関数 – PHP マニュアル

よく使うビルトイン関数と使用例

今回メインで学習したのが、string 関数です。これは文字列操作を行うための関数群のことで、”str が”突いている関数が多くあります。(参考:string 関数 – PHP マニュアル
ここからは、いくつかの関数の出力を見てみます。

<?php
$filename = ‘sample-code.old.php’;
echo substr($filename, -3)
?>

この出力は、php になります。
substr 関数は、substring(部分文字列)という意味になります。substr 関数の文法はこちらです。

substr(string $stringm int $offset, ?int $length = null): string

$string 文字列の$offset 番目の文字から$length 長の文字列を返すという意味です。例えば、Okonomiyaki という文字列であれば、echo substr($filename, -3)とすると、「aki」が帰ってきます。
$offset がマイナスの数のときには、$string 文字列の後ろから文字を数えていきます。
ちなみにこれだと固定で3 文字の拡張子にしか対応できないことになり、柔軟性がないため、文字列の最後ドットから後ろを取得するような方法を取るといいです。

echo substr($filename, strrpos($filename, ‘.’) + 1;

strpos※については、この後扱っています。
続いて、

<?php
$filename = ‘sample-code.old.php’;
echo strstr($filename, ‘.’)
?>

この出力は、.old.php になります
strstr 関数というのは、対象の文字列から検索文字列を探して、見つかったら検索文字列から対象の文字列の最後までを返す、という処理です。文法はこちらです。

strstr(string $haystack string $needle, bool $before_needle = false): string | false

$haystack 文字列の中で$needle 文字列が最初に登場する場所を検索し、そこから$haystack 文字列の終わりまでの文字列を返すという意味です。日本語を含む文字列を扱う場合は、マルチバイト文字対応のmb_strstr 関数を使います。
(参考:mb_strstr – PHP マニュアル
例えば、以下のような場合だと出力はどうなるでしょうか。

<?php
$filename = ‘PHP8 技術者認定初級試験’;
echo mb_strstr($filename, ‘認’)
?>

これは、以下のようになります。
「認定初級試験」
次は、strpos です。

<?php
$filename = ‘sample-code.old.php’;
echo substr($filename, strpos($filename, ‘.’), strrpos($filename, ‘.’))
?>

こちらの出力はどうなるでしょうか。
まず、strpos 関数は、文字列内の部分文字列が最初に出てくる場所を見つけるために使用します。見つかった場合は、0 から数値で返し、見つからなかった場合はfalse を返すようになります。このプログラムの出力としては、.old.php になります。

strpos の文法はこちらです。

strpos(string $haystack, string $needle, int $offset = 0): int | false

また、strrpos 関数は、文字列内で文字列が最後に出てくる場所を見つけるために使用します。r は、reverse の頭文字です。
つまり、プログラムの解釈としては、$filename の11 文字目から15 も自分を返すという指示になるため.old.php が出力となります。
もう1 つ、explode 関数も勉強しました。

<?php
$filename = ‘sample-code.old.php’;
echo explode(‘.’, $filename)[count(explode(‘.’, $filename))]
?>

explode 関数は、文字列を指定した区切り文字で分割し、分割された部分文字列を配列に変換する関数です。
文法はこちらです。

explode(string $separator, string $string, int $limit = PHP_INT_MAX): array

$string 文字列を$separator 文字列で分割した配列を返すという意味です。つまり、’.’で分割した文字列から、インデックスが3 の要素を返すということになりますが、要素数が3の配列にインデックスが3 の要素がないためエラーとなります。
いかがでしたでしょうか。string のビルトイン関数についてイメージつけられましたでしょうか。

PHP8技術者認定初級試験で、正しいPHPの理解を

今回はビルトイン関数を使った文字列操作をいくつか学習してきました。
次回以降もPHP で学習した内容をシェアしていきますので、よろしくお願いいたします。

また、PHP の学習やエンジニアになるためのマイルストーンとして、PHP 試験はおすすめです。PHP8技術者認定初級試験はPHP を扱うあらゆる方にとって有益な試験になるはずですので、ご興味がある方はぜひチャレンジしてみてください。
試験ページ: PHP8 初級試験

この記事が気に入ったら
いいね または フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!