Php 有人能帮我解决一个关于检查字符串中是否存在字符串数组的问题吗?

Php 有人能帮我解决一个关于检查字符串中是否存在字符串数组的问题吗?,php,arrays,regex,object,foreach,Php,Arrays,Regex,Object,Foreach,我所做的是在tweets对象中循环,在每次迭代中,我检查tweet是否包含存储在数组中的任何单词 本例显示了preg_匹配,但是如果改用strpos()或stripos(),则会出现同样的问题 以下是函数: 问题是除非我硬编码一个单词,否则它不会通过if语句$word确实包含正确的值,而且肯定是字符串,因为我已经尝试在循环中回音和var_转储该值 用法: 我尝试过四处搜索,尝试过许多不同的方法,但都没有效果。有人知道问题可能是什么吗?工作示例: <?php function con

我所做的是在tweets对象中循环,在每次迭代中,我检查tweet是否包含存储在数组中的任何单词

本例显示了preg_匹配,但是如果改用strpos()或stripos(),则会出现同样的问题

以下是函数:

问题是除非我硬编码一个单词,否则它不会通过if语句$word确实包含正确的值,而且肯定是字符串,因为我已经尝试在循环中回音和var_转储该值

用法:


我尝试过四处搜索,尝试过许多不同的方法,但都没有效果。有人知道问题可能是什么吗?

工作示例:

<?php
    function contains($tweet, $words)
    {
        $count = 0;
        array_walk($words,function($word) use(&$count,$tweet){
            if(strpos($tweet,$word)!==false){
                $count++;
            }
        });
        return $count;
    }

在列表返回的字符串末尾有一些鬼鬼祟祟的回车。通过使用str_replace()删除它们,问题得以解决。

您能否显示
$tweet
$words
?@chris85回显“$tweet”返回字符串。”$words'是从文本文件中获取单词的数组。在循环中回显“$word”每次都会以字符串的形式返回正确的单词。如果我用硬编码的单词替换“$word”,我仍然会遇到同样的问题-它不会通过if语句(你能展示一下你在哪里硬编码的代码样本吗?你应该能够用一个更好的正则表达式来适应它。发布一个可复制的例子。
$results = $twitter->request('search/tweets', 'GET', $parameters);
$negative_words = file("negative-words.txt");

foreach($results->statuses as $tweet) {
    echo contains($tweet->text, $negative_words);
}
<?php
    function contains($tweet, $words)
    {
        $count = 0;
        array_walk($words,function($word) use(&$count,$tweet){
            if(strpos($tweet,$word)!==false){
                $count++;
            }
        });
        return $count;
    }