ホームページ  >  記事  >  バックエンド開発  >  ## PHP を使用して文字列内の URL を効率的に検出するにはどうすればよいですか?

## PHP を使用して文字列内の URL を効率的に検出するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-24 18:51:02594ブラウズ

## How to Efficiently Detect URLs within a String Using PHP?

配列内の文字列の存在の確認

ユーザーが送信した文字列に、事前定義された配列に格納されている URL が含まれているかどうかを確認することを目的としています。これを行うために、in_array() 関数を使用しようとしましたが、入力に関係なく一貫して「一致が見つかりません」が返されます。

修正されたアプローチ

問題は、このタスクに in_array() を使用することにあります。この関数は、部分的な値の一致ではなく、配列内の文字列全体の存在を評価します。文字列が含まれているかどうかを確認するには、次の代替案を検討してください。

  1. strpos():

    <code class="php">if (strpos($string, $url) !== FALSE) {
        echo "Match found"; 
        return true;
    }</code>

    この関数は $ の出現を検索します。 $string 内の URL。 FALSE 以外の strpos 結果は一致を示し、それに応じて echo ステートメントと return ステートメントは「一致が見つかった」ことを示し、返します。

  2. strstr():

    <code class="php">if (strstr($string, $url)) {
        echo "Match found"; 
        return true;
    }</code>

    strstr() は、strpos() と同じ操作を効果的に実行します。 $url を含む $string の部分が返され、FALSE 以外の結果も一致が成功したことを意味します。

配列の反復処理

配列内の複数の URL に対してチェックしたいため、foreach ループを使用して各要素を反復処理します。

<code class="php">foreach ($owned_urls as $url) {
    if (strpos($string, $url) !== FALSE) { // or strstr($string, $url)
        echo "Match found"; 
        return true;
    }
}</code>

このループは各 URL を調べ、文字列に一致するものがあればループを終了します。 、「一致が見つかりました」と表示され、true が返されます。あるいは、一致するものが見つからずに終了すると、スクリプトは「見つかりません!」とエコーします。

大文字と小文字の区別

文字列と URL で大文字と小文字が区別されない場合は、それぞれ、stripos() 関数または stristr() 関数を使用します。これらの大文字と小文字を区別しないバージョンでは、一致が大文字と小文字を区別しないことが保証されます。

以上が## PHP を使用して文字列内の URL を効率的に検出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。