配列内の文字列の存在の確認
ユーザーが送信した文字列に、事前定義された配列に格納されている URL が含まれているかどうかを確認することを目的としています。これを行うために、in_array() 関数を使用しようとしましたが、入力に関係なく一貫して「一致が見つかりません」が返されます。
修正されたアプローチ
問題は、このタスクに in_array() を使用することにあります。この関数は、部分的な値の一致ではなく、配列内の文字列全体の存在を評価します。文字列が含まれているかどうかを確認するには、次の代替案を検討してください。
strpos():
<code class="php">if (strpos($string, $url) !== FALSE) { echo "Match found"; return true; }</code>
この関数は $ の出現を検索します。 $string 内の URL。 FALSE 以外の strpos 結果は一致を示し、それに応じて echo ステートメントと return ステートメントは「一致が見つかった」ことを示し、返します。
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 サイトの他の関連記事を参照してください。