【PHP】文字列が指定した文字列で終わっているかどうかを判定する方法
文字列が指定された文字列(サフィックス)で終わっているかどうかを判定する関数を作成してみましょう。判定に成功した場合は TRUE を、失敗した場合は FALSE を返す仕様です。
関数の構文は次のとおりです。
endFunc(str, lastStr)
判定に使用するパラメータは以下の2つです。
str − 検査対象となる文字列
lastStr − 対象文字列の末尾で検索するテキスト
実装例
次のコードは、文字列の末尾が指定した文字列と一致しているかどうかを確認する例です。
<?php
function endFunc($str, $lastString) {
$count = strlen($lastString);
if ($count == 0) {
return true;
}
return (substr($str, -$count) === $lastString);
}
if (endFunc("pqrstuv", "rst"))
echo "True!";
else
echo "False!";
?>
仕組みの解説
まず strlen() で検索対象文字列の長さを取得します。長さが 0 の場合(空文字列の場合)は常に一致するとみなし、true を返します。
その後、substr() の第2引数に負の値を渡すことで、元の文字列の末尾から必要な長さ分だけ部分文字列を切り出し、厳密な比較演算子 === を使って検索文字列と完全に一致するかどうかを比較しています。型まで含めて比較することで、予期しない型変換による誤判定を防げます。
出力
上記コードの実行結果は次のとおりです。「pqrstuv」の末尾は「rst」ではなく「tuv」であるため、判定は FALSE となります。
False!
補足:PHP 8 以降では str_ends_with() が使える
PHP 8.0 以降では、まさにこの目的のために用意された組み込み関数 str_ends_with() が標準で提供されています。独自の関数を定義しなくても、次のように1行で簡潔に書けます。
if (str_ends_with("pqrstuv", "tuv")) {
echo "True!";
}
同様に、先頭からの一致を調べる str_starts_with() も利用できるため、環境が許す限りこれらの組み込み関数を使うのがおすすめです。
-
Pythonで文字列がバイナリ文字列(0と1のみ)かどうかを判定する方法
この記事では、与えられた文字列が「0」と「1」だけで構成されているかどうかを確認する方法を解説します。このような文字列はバイナリ文字列と呼ばれます。もし「2」や「3」など他の数字が含まれている場合は、非バイナリ文字列として分類します。set()を使った方法Pythonのset()は重複しない要素のみを格納する性質を持っています。そこで、対象の文字列にset()を適用し、その結果を「0」と「1」だけからなる集合と比較します。両者が一致すれば、その文字列は確実にバイナリ文字列です。また、文字列が「1」のみ、または「0」のみで構成されている場合も考慮する必要があります。そのため、OR条件を使って、集
-
Pythonで文字列が指定した接尾辞(サフィックス)で終わっているかどうかを確認する方法
endswith()メソッドを使う方法Pythonでは、文字列クラスに用意されている endswith() メソッドを使うことで、文字列が特定の接尾辞(サフィックス)で終わっているかどうかを簡単に確認できます。このメソッドは、検索したい接尾辞の文字列を引数として受け取り、文字列オブジェクトに対して呼び出します。以下のように使用します。string = C:/Users/TutorialsPoint1/~.py print(string.endswith(.py))実行結果:Trueこの例では、ファイルパスの文字列が .py という拡張子で終わっているため、True が返されます。もし終わってい