使用strpos在php字符串中搜索标记

使用strpos在php字符串中搜索标记,php,strpos,Php,Strpos,这是一个UTF-8字符串 $string = '<h2> a none english char - utf-8 string </h2>'; $string='a none-english char-utf-8 string'; 我想检查标签是否存在于$string中 我尝试: if(strpos($string , '<h2>')) or if(strpos($string , '<h2>') == true ) or if(strpos(

这是一个UTF-8字符串

$string = '<h2> a none english char - utf-8 string </h2>';
$string='a none-english char-utf-8 string';
我想检查标签是否存在于$string中

我尝试:

if(strpos($string , '<h2>'))
or
if(strpos($string , '<h2>') == true )
or
if(strpos($string , '<h2>') === true)
or
if(mb_strpos($string , '<h2>' ))
if(strpos($string,'))
或
if(strpos($string,')==true)
或
if(strpos($string,')==true)
或
如果(mb_strpos($string,,))

但所有这些条件都是错误的。有什么问题吗?

您的测试失败,因为您的“针”字符串正好出现在haystack的开头,因此strpos()将返回
0
,以指示字符串的开头

if (0)          -> false
if (0 == true)  -> false
if (0 === true) -> false
不能使用相等在这种情况下,必须使用不相等:

if (strpos(...) !== FALSE)
意见跟进:

我看不出它怎么会“毫无效果”:

php>$string='a none-english char-utf-8 string';
php>var_转储(strpos($string,');
int(0)
php>var_dump(strpos($string',)==true);
布尔(假)
php>var_dump(strpos($string',)==true);
布尔(假)
php>var_dump(mb_strpos($string,');
int(0)
php>var_dump(mb_strpos($string,,)!==false);
布尔(真)
您的最后一个应该可以工作(使用)。 但在字符串中,“”是字符串的开头,因此位于位置0。 mb_strpos或strpos如果找到,则返回子字符串的位置;如果未找到,则返回布尔值false。 由于您正在检查以下情况:

if (mb_strpos($string, '<h2>'))
这就是为什么你认为它是假的。 使用:

if(mb_strpos($string,)!==false)

您是否尝试过:?strpos返回int或boolean false,因此
===true
将始终失败。我们正在努力将其全部置于条件下。未使用
var\u dump
。是,以及?var_dump用于调试,以查看条件的结果。正如我的编辑示例所示,它准确地显示了我所说的。您的条件生成布尔值false,因为您正在进行不正确的比较,而my
!==false
生成一个布尔值true,与它应该的值完全相同。@anantkumarsingh您可以将任何条件放入var_dump()中,并查看该条件的结果。马克B的答案是正确的。谢谢。现在它起作用了。我能用一下吗!==一般来说,其他人呢?它总是给我正确的答案吗?是的,这很好,我知道,但他最后需要做什么。我们将提到这一点。他不能像你建议的那样留下密码。对不起我的话。我的意图不是让你伤心。
if (mb_strpos($string, '<h2>'))
if (0)
if (mb_strpos($string , '<h2>') !== false)