web-dev-qa-db-ja.com

PHP MySQLに似たもののように、ifステートメントについては?

Mysqlと同じものを使用するifステートメントが必要ですsomething LIKE '%something%'

PHPでifステートメントを作成したい。

if ($something is like %$somethingother%)

出来ますか?

私がこの質問をする理由は、MySQLコマンドを変更したくない、それは多くのものが含まれている長いページであり、これのために別の関数を構築したくないからです。

これが可能かどうか、可能であればそれを行う方法を教えてください。

13
friendishan

もし($ somethingは%$ somethingother%のようなものです)

出来ますか?

番号。

MySQLコマンドを変更したくありません。多くのものが含まれている長いページです。

検索と置換で正規表現をサポートする優れたエディターを使用して、次のようなものに変換します。

if(stripos($something, $somethingother) !== FALSE){

}
28

私は知っています、この質問は実際ではありませんが、同様の問題を解決しました:)

私の解決策:

/**
 * SQL Like operator in PHP.
 * Returns TRUE if match else FALSE.
 * @param string $pattern
 * @param string $subject
 * @return bool
 */
function like_match($pattern, $subject)
{
    $pattern = str_replace('%', '.*', preg_quote($pattern, '/'));
    return (bool) preg_match("/^{$pattern}$/i", $subject);
}

例:

like_match('%uc%','Lucy'); //TRUE
like_match('%cy', 'Lucy'); //TRUE
like_match('lu%', 'Lucy'); //TRUE
like_match('%lu', 'Lucy'); //FALSE
like_match('cy%', 'Lucy'); //FALSE
19
Petr Bugyík

見てください strstr 関数

4
Haim Evgi

関数を使用して、strstrstrpossubstr_countなどの別の文字列で検索文字列を検索します。

2
Radek Benkel

SQLと同じように機能するこの関数を使用します[〜#〜] like [〜#〜]演算子ですが、ブール値を返し、もう1つのifステートメントで独自の条件を作成できます

function like($str, $searchTerm) {
    $searchTerm = strtolower($searchTerm);
    $str = strtolower($str);
    $pos = strpos($str, $searchTerm);
    if ($pos === false)
        return false;
    else
        return true;
}
$found = like('Apple', 'app'); //returns true
$notFound = like('Apple', 'lep'); //returns false

if($found){
    // This will execute only when the text is like the desired string
}
0
Bairu

ただし、小文字の文字列を指定する必要があるため、問題なく機能します。 strstr関数の例:

$myString = "Hello, world!";
echo strstr( $myString, "wor" );                    // Displays 'world!'
echo ( strstr( $myString, "xyz" ) ? "Yes" : "No" ); // Displays 'No'
0
Ehsan

MySQLサーバーにアクセスできる場合は、MySQLiで次のようなクエリを送信します。

$SQL="select case when '$Value' like '$Pattern' then 'True' else 'False' end as Result";
$Result=$MySQLi->query($SQL)->fetch_all(MYSQLI_ASSOC)[0]['Result'];

結果はTrueまたはFalseを含む文字列になります。 PHPに良いことをさせ、SQLをいいね!.

0
Reese

strpos()が機能していないため、このpreg_match()を使用する必要があります

$a = 'How are you?';

if (preg_match('/\bare\b/', $a)) {
    echo 'true';
}

このように私は単語と一致しています誰かがそれが役に立つだろうという希望です

0
Asad Ullah