Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-在变量中查找某些字符串_Php_String_Variables - Fatal编程技术网

PHP-在变量中查找某些字符串

PHP-在变量中查找某些字符串,php,string,variables,Php,String,Variables,我的最新问题涉及在变量中查找“http://”。此变量包含客户端网站上评论部分的内容。我看到了各种各样的答案,但似乎都不管用。我在这里看了一些其他的帖子,我还没有得到最好的答案。以下是我到目前为止的情况: if(strpos($comments, 'http://') == true) { // Does stuff here } 我注意到其他人使用preg_match,有些人说是以数组的形式进行的。我感到困惑,选择太多了。只是开玩笑。不过,我希望得到一些澄清,任何建议都将不胜感激。您需要

我的最新问题涉及在变量中查找“http://”。此变量包含客户端网站上评论部分的内容。我看到了各种各样的答案,但似乎都不管用。我在这里看了一些其他的帖子,我还没有得到最好的答案。以下是我到目前为止的情况:

if(strpos($comments, 'http://') == true) {
  // Does stuff here
}
我注意到其他人使用preg_match,有些人说是以数组的形式进行的。我感到困惑,选择太多了。只是开玩笑。不过,我希望得到一些澄清,任何建议都将不胜感激。

您需要说:

if(strpos($comments, 'http://') !== false) {
…因为如果
http://
位于字符串的开头,它可以返回0(错误)

注意:这将只找到字符串中第一个出现的
http://


仔细查看参考资料:

您需要这样更改代码:

if(strpos($comments, 'http://') === false) {
//无链接 }

因为strpos返回的整数是字符串的位置

例如: 完整字符串:“http://stackoverflow.com “你好” 你会发现:“http”

它自然返回0

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

它返回1

所以您必须使用===运算符来检查是否真的为“boolean false”

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


更详细的信息:

在那篇文章中,他们做了===而不是==,我将尝试一下。那么>=将搜索整个字符串吗?
strpos()
将搜索整个字符串,直到找到第一个指针或到达字符串的结尾。非常感谢,我将尝试一下,看看结果如何。我试图做的主要事情是阻止注释中的链接。实际上,
str\u ireplace()
可能更符合您的需要。即使我不想替换http://,这种方法也可以吗?在大多数情况下,我会收到垃圾邮件评论,如“byfrgpvsipvtfok,habyqiupyh,[url=,habyqiupyh”,我希望在遇到http://时阻止表单提交。