このサイトではアフィリエイト広告を利用しています。

文字列内の検索に便利な関数 str_contains(), str_starts_with(), str_ends_with()

PHP8から導入されている関数str_contains, str_starts_with, str_ends_withを使うと、文字列を検索するのが便利になります。

str_contains

str_containsは、文字列内の検索を行います。第一引数が検索対象の文字列、第二引数が探したい文字列です。検索対象の文字列に探したい文字列が入っていればtrue、そうでなければfalseを返します。

WordPressの例だと、

<?php
if( str_contains( $search, ',' ) ) {
  // , が入っている時の処理
}
?>

のように使われています。 $search の中に、, が入っているかどうかを判定します。

※PHP7までだと、strpos等を使っていましたが、関数名がstr_containsと分かりやすくなりました。

str_starts_with

str_starts_withは、文字列内の検索を行います。第一引数が検索対象の文字列、第二引数が探したい文字列です。検索対象の文字列が探したい文字列で始まっていればtrue、そうでなければfalseを返します。

WordPressの例だと、

<?php
if ( str_starts_with( $_SERVER['REQUEST_URI'], 'http' ) ) {
  // 処理
}
?>

のように使われています。 $_SERVER[‘REQUEST_URI’] が、http で始まっているかどうかを判定します。

str_ends_with

str_ends_withは、文字列内の検索を行います。第一引数が検索対象の文字列、第二引数が探したい文字列です。検索対象の文字列が探したい文字列で終わっていればtrue、そうでなければfalseを返します。

WordPressの例だと、

<?php
if ( str_ends_with( $summary, '[...]' ) ) {
  // 処理
}
?>

のように使われています。 $summary が、[…] で終わっているかどうかを判定します。

PHP7以前でWordPressを動かす場合は?

wp-includs/compat.php 内に、後方互換用のコードが以下のように記述されています。

if ( ! function_exists( 'str_contains' ) ) {
/**
* Polyfill for `str_contains()` function added in PHP 8.0.
*
* Performs a case-sensitive check indicating if needle is
* contained in haystack.
*
* @since 5.9.0
*
* @param string $haystack The string to search in.
* @param string $needle   The substring to search for in the `$haystack`.
* @return bool True if `$needle` is in `$haystack`, otherwise false.
*/
function str_contains( $haystack, $needle ) {
	if ( '' === $needle ) {
		return true;
	}

		return false !== strpos( $haystack, $needle );
	}
}

このため、PHP7以前でWordPressを動かす場合でも、str_contains, str_starts_with, str_ends_withが利用可能です。

更新日:

↑このページへのリンク