3

私の最新の問題は、変数で「http://」を見つけようとすることです。この変数には、クライアントWebサイトのコメントセクションの内容が含まれます。私はあらゆる種類の答えを見てきましたが、どれもうまくいかないようです。私はここで他のいくつかの投稿を見ましたが、まだ最良の答えは得られていません。これが私がこれまでに持っているものです:

if(strpos($comments, 'http://') == true) {
  // Does stuff here
}

他の人がpreg_matchを使用していることに気づき、配列でそれを行うと言われている人もいます。私は混乱している、あまりにも多くのオプション。冗談だ。いくつかの説明が必要ですが、アドバイスをいただければ幸いです。

4

3 に答える 3

11

あなたは言う必要があります:

if(strpos($comments, 'http://') !== false) {

http://...文字列の先頭にある場合は0(これはfalse)を返す可能性があるためです。

注:これはhttp://、文字列内の最初の出現のみを検索します。

リファレンスをよく見てください:http://php.net/manual/en/function.strpos.php

于 2012-06-06T19:20:58.153 に答える
4

次のようにコードを変更する必要があります。

if(strpos($comments, 'http://') === false) {

//リンクなし}

strposは、文字列の位置である整数を返すためです。

例:完全な文字列: "http://stackoverflow.com hello"あなたが見つけた: "http"

当然、0を返します。

しかし、完全な文字列: "ahttp://stackoverflow.com"あなたが見つけた: "http"

1を返します。

したがって、===演算子を使用して、実際に「ブール値false」であることを確認する必要があります。

==演算子でチェックしようとすると、0がfalseになるため、失敗する可能性があります。

詳細: http: //php.net/strpos

于 2012-06-06T19:29:59.853 に答える
0

私はこれがより良い一致であることがわかりました:(phpstormideによって推奨されます)

if(str_contains($e, '1062 Duplicate entry')) {
            
}
于 2021-10-15T11:35:34.560 に答える