我正在尝试排除那些在文本中没有RT @
的推文。
这是我的代码:
foreach ($tweets3 as $item)
{
$text = $item->text;
$check = 'RT @';
$result = strpos($text, $check);
if($result == false)
continue;
}
但这些推文也被排除在外
Mention text : RT @IBMcloud: A few #cloud highlights from the @IBM Annual Report. Read more: http://t.co/TJBHoX3vdU http://t.co/fG66SE7kV1
RT @holgermu: MyPOV - Nice way to put out our annual report in an interactive (engaging?) format - here is @IBM's - http://t.co/TIqi0soc5W
RT @TopixPolitix: Chinese State and Citizens Must Battle Airpocalypse Together http://t.co/nV5TGJG6Fl - http://t.co/cln83ufDnk
虽然他们的文字中有RT @
。为什么?
答案 0 :(得分:1)
此函数可能返回布尔值FALSE,但也可能返回非布尔值,其值为FALSE。使用===运算符测试此函数的返回值。
正如文档所述,strpos()
可以返回评估为布尔值FALSE
的值。例如,如果字符串开头有匹配项,strpos()
将返回0
。
为避免歧义,请始终使用严格比较(===
)而不是松散比较(==
)(尽可能):
foreach ($tweets3 as $item)
{
$text = $item->text;
$check = 'RT @';
$result = strpos($text, $check);
// if "RT @" text not found in tweet, skip to next iteration
if ($result === false) continue;
}
答案 1 :(得分:0)
我认为你的逻辑被翻转了。如果找到文本,$result
将保留数值。您希望您的支票为:
if($result !== false)
continue;