【PHP第6回】いろいろな関数(文字列を検索・文字列をソート)

【PHP第6回】いろいろな関数(文字列を検索・文字列をソート)

PHPのプログラミングメモ第6回です。何回かに分けてメモを投稿していきます。なお、この記事はプログラミングメモですのでどんどん追記していきます。

【関連記事】


文字列を取得する

要件

  • $strings = “vwxyzさしす“; と宣言する
  • 「さしす」という文字のみを取得して表示する

sample code 1 / mb_substr関数を使う

mb_substr関数

mb_substr関数は、マルチバイト文字列から指定した範囲の文字列を切り出す関数
・この関数を使って、$xの文字列から、目的の文字列「あいう」を切り抜いて変数$resultに格納
・echo文で$resultを表示することで、「あいう」という文字列を表示することができる

mb_strpos関数

・マルチバイト文字列関数の一つ
mb_strpos関数は指定した文字列内で、指定した文字列が最初に現れる位置を取得する関数
・通常のstrpos関数は、バイト単位での文字列検索を行うため、マルチバイト文字列を扱う際には誤った結果を返す場合がある
・例えば、日本語文字列を扱う場合、1文字あたり3バイト以上の領域を占有することがあるため、バイト数での位置検索では文字列の区切りを正確に取得することができない
・mb_strpos関数は、マルチバイト文字列を扱う場合に適しており、バイト単位ではなく文字単位での位置検索を行う
・そのため、正確に文字列の区切り位置を取得できる
pos = position

mb_strlen

・マルチバイト文字列関数の一つ
mb_strlen関数は指定された文字列の長さを返す関数
・通常のstrlen関数は、半角文字列に対しては正しい文字数を返すが、マルチバイト文字列に対しては誤った文字数を返してしまうことがある
・mb_strlen関数は、マルチバイト文字列にも対応しており、正確な文字数を返すことができる

source code

$x = "vwxyzさしす";
$target_string = "さしす";
$start_position = mb_strpos($x, $target_str);
$length = mb_strlen($target_str);
$result = mb_substr($x, $start_pos, $length);

echo $result; // result さしす

sample code 2 / preg_match関数を使う

preg_match関数

preg_match関数は正規表現パターンに一致する文字列を検索する関数
・この例では、正規表現パターン ‘/あいう/u’ を使用して、「あいう」という文字列を検索する
・/u フラグを使用することで、マルチバイト文字列を扱えるようになる
・preg_match関数は、マッチした文字列を$matches配列に格納するため、$matches[0]を使用して、目的の文字列を取得している


source code

$x = "abcaあいう";
$string_pattern = '/さしす/u';
preg_match($string_pattern, $x, $matches);
$result = $matches[0];

echo $result;

// result
さしす

配列を降順にソートして出力する

要件

  • 次の配列を宣言する
  • $array_strings = array(‘さ’, ‘し’, ‘す’, ‘せ’, ‘そ’);
  • 降順にソートして出力する
  • ex) そせすしさ

sample code 1 / rsort関数を使う

rsort()関数

  • rsort関数は配列を降順にソートするための関数

implode()関数

  • implode関数は配列を文字列に変換するための関数
  • 第1引数に区切り文字を指定することができる
  • ここでは空文字列を指定している
  • 配列の要素が文字列型である場合に特に便利で、簡単かつ効率的な方法で文字列を生成することができる

source code 1

$array_strings = array('さ', 'し', 'す', 'せ', 'そ');
rsort($array_strings); // 降順にソート
echo implode("", $array_strings);

// result
そせすしさ

source code 2 / 上記のコードを関数にしてみる

  • 関数を使うことで、同じ処理を複数回実行する場合や、コードの可読性を高める場合などに便利
  • 引数を受け取ることで、柔軟に配列をソートすることができるため再利用性が高くなる
function sortArrayDescending($array) {
rsort($array);
return implode("", $array);
}

$array_strings = array('さ', 'し', 'す', 'せ', 'そ');
echo sortArrayDescending($array_strings) . PHP_EOL . PHP_EOL;

// result
そせすしさ

その他の関数

  • PHPでは配列をソートするための様々な関数がある
  • これらの関数を使って、要件に応じたソートを行うことができる
sort()関数 ・配列を昇順にソートする関数
要素の値によってソートされる
asort()関数 ・配列を昇順にソートする関数
要素の値によってソートされるが、
キーと値が紐づいたままソートされる
rsort()関数 ・配列を降順にソートする関数
要素の値によってソートされる
arsort()関数 ・配列を降順にソートする関数
要素の値によってソートされまるが、
キーと値が紐づいたままソートされる
ksort()関数 ・配列をキーで昇順にソートする関数
krsort()関数 ・配列をキーで降順にソートする関数