确定数组中是否存在字符串
您的目标是验证用户提交的字符串是否包含存储在预定义数组中的任何 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中文网其他相关文章!