3

我的最新问题涉及尝试在变量中查找“http://”。此变量包含客户网站上评论部分的内容。我见过各种各样的答案,但似乎没有一个有效。我在这里查看了其他一些帖子,但我还没有得到最好的答案。这是我到目前为止所拥有的:

if(strpos($comments, 'http://') == true) {
  // Does stuff here
}

我注意到其他人使用 preg_match 并且有人说要在数组中进行。我很困惑,太多的选择。只是在开玩笑。不过,我希望得到一些澄清,任何建议都将不胜感激。

4

3 回答 3

11

你需要说:

if(strpos($comments, 'http://') !== false) {

...因为如果http://它位于字符串的开头,它可以返回 0(这是错误的)。

注意:这只会http://在字符串中找到第一次出现的 。

仔细看看参考: http: //php.net/manual/en/function.strpos.php

于 2012-06-06T19:20:58.153 回答
4

您需要像这样更改代码:

if(strpos($comments, 'http://') === false) {

//没有链接 }

因为 strpos 返回整数,它是您的字符串的位置。

示例:完整字符串:“http://stackoverflow.com hello” 你发现:“http”

自然返回 0。

但完整的字符串:“ahttp://stackoverflow.com”你发现:“http”

它返回 1。

所以你必须使用 === 运算符来检查是否真的是“布尔假”。

如果您尝试使用 == 运算符进行检查,您可能会失败,因为它将 0 视为错误。

更多细节: http: //php.net/strpos

于 2012-06-06T19:29:59.853 回答
0

我发现这是一个更好的匹配:(由 phpstorm ide 推荐)

if(str_contains($e, '1062 Duplicate entry')) {
            
}
于 2021-10-15T11:35:34.560 回答