PHPの文字列検索でSQLの”LIKE”的に使える関数を作ってみた
コピペ用関数
こちらをコピーして使ってください。
functions.php
function strlike(string $haystack, string $needle): bool
{
//
$initial_is_percent = false;
$final_is_percent = false;
//
if (substr($needle, 0, 1) === '%') {
$initial_is_percent = true;
} else {
//no action.
}
//
if (substr($needle, -1) === '%') {
$final_is_percent = true;
} else {
//no action.
}
//
$matched = false;
if (
$initial_is_percent === true &&
$final_is_percent === true
) { //部分一致!
$needle = substr($needle, 1); //最初の%を切る
$needle = substr($needle, 0, -1); //最後の%を切る
if (str_contains($haystack, $needle) === true) {
$matched = true;
} else {
//no action.
}
} else if (
$initial_is_percent === false &&
$final_is_percent === true
) { //前方一致!
$needle = substr($needle, 0, -1); //最後の%を切る
if (str_starts_with($haystack, $needle) === true) {
$matched = true;
} else {
//no action.
}
} else if (
$initial_is_percent === true &&
$final_is_percent === false
) { //後方一致!
$needle = substr($needle, 1); //最初の%を切る
if (str_ends_with($haystack, $needle) === true) {
$matched = true;
} else {
//no action.
}
} else {
if ($needle === $haystack) {
$matched = true;
} else {
//no action.
}
}
return $matched;
}
使い方
LIKE句のように「%」を組み合わせることで部分一致や前方一致が確認できます。
//部分一致
strlike('abcdefg', '%cde%'); // -> true
strlike('abcdefg', '%ce%'); // -> false
//前方一致
strlike('abcdefg', 'abc%'); // -> true
strlike('abcdefg', '%abc'); // -> false
//後方一致
strlike('abcdefg', '%efg'); // -> true
strlike('abcdefg', 'defg%'); // -> false
//完全一致
strlike('abcdefg', 'abcdefg'); // -> true
strlike('abcdefg', 'abcd'); // -> false
Author And Source
この問題について(PHPの文字列検索でSQLの”LIKE”的に使える関数を作ってみた), 我々は、より多くの情報をここで見つけました https://qiita.com/yusuke5/items/310d6e6234d6aa9f0302著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .