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()
が利用可能です。
更新日: