確定數組中是否存在字串
您的目標是驗證使用者提交的字串是否包含儲存在預定義數組中的任何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() 相同的操作。它會傳回 $string 中包含 $url 的部分,非 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,如果有任何與字串匹配的URL,則會終止循環,顯示“找到匹配項”,並傳回true。或者,在沒有找到匹配項的情況下結束時,腳本會回顯「未找到!」並傳回 false。
區分大小寫
如果字串和 URL 不區分大小寫,請分別使用 stripos() 或 stristr() 函數。這些不區分大小寫的版本確保匹配不區分大小寫。
以上是## 如何使用 PHP 有效率地偵測字串中的 URL?的詳細內容。更多資訊請關注PHP中文網其他相關文章!