Determining String Presence within an Array
You aim to verify if a user-submitted string contains any URLs stored in a prédéfined array. To do so, you've attempted to employ the in_array() function, but it consistently returns "Match not found" regardless of the input.
Corrected Approach
The issue lies in using in_array() for this task. This function assesses the presence of an entire string within an array, rather than matching partial values. To check for string inclusion, consider the following alternatives:
strpos():
<code class="php">if (strpos($string, $url) !== FALSE) { echo "Match found"; return true; }</code>
This function searches for the occurrence of $url within $string. A non-FALSE strpos result indicates a match, and the echo and return statements accordingly signify and return "Match found".
strstr():
<code class="php">if (strstr($string, $url)) { echo "Match found"; return true; }</code>
strstr() effectively accomplishes the same operation as strpos(). It returns the portion of $string that contains $url, and a non-FALSE result again implies a successful match.
Iterating through the Array
Since you want to check against multiple URLs in the array, employ a foreach loop to iterate through each element:
<code class="php">foreach ($owned_urls as $url) { if (strpos($string, $url) !== FALSE) { // or strstr($string, $url) echo "Match found"; return true; } }</code>
This loop explores each URL, and if any matches the string, it terminates the loop, displays "Match found", and returns true. Alternatively, upon concluding without finding a match, the script echoes "Not found!" and returns false.
Case Sensitivity
If the string and URLs are not case-sensitive, utilize stripos() or stristr() functions, respectively. These case-insensitive versions ensure the matches are case-independent.
The above is the detailed content of ## How to Efficiently Detect URLs within a String Using PHP?. For more information, please follow other related articles on the PHP Chinese website!