看看文本文件是否包含php中的单词

时间:2014-04-02 13:38:21

标签: php text-files

我想查看一个字符串,看看字符串中的任何单词是否与文本文件中的单词匹配。

假设我有一个product.txt文件,它包含:

苹果 索尼 戴森 麦当劳 iPod的

这是我的代码:

    <?php

$productFile = file_get_contents('products.txt', FILE_USE_INCLUDE_PATH);

/*
* product.txt file contains
* apple
* pc
* ipod
* mcdonalds
*/

$status = 'i love watching tv on my brand new apple mac';

    if (strpos($status,$productFile) !== false) {
        echo 'the status contains a product';
    }

    else{
        echo 'The status doesnt contain a product';
    }

?>

现在它告诉我状态不包含它所做的产品,任何人都可以看到我出错的地方吗?

3 个答案:

答案 0 :(得分:4)

您在字符串中搜索单词列表作为一个整体。相反,您必须分别搜索单词列表中的每个单词。例如,str_word_count可用于将字符串拆分为单词。

<?php

$productFile = file_get_contents('products.txt');
$products = str_word_count($productFile, 1);

$status = 'i love watching tv on my brand new apple mac';

$found = false;
foreach ($products as $product)
{
    if (strpos($status,$product) !== false) {
        $found = true;
        break;
    }
}

if ($found) {
    echo 'the status contains a product';
}
else {
    echo 'The status doesnt contain a product';
}

?>

您可能还需要考虑stripos而不是strpos进行不区分大小写的比较。

答案 1 :(得分:1)

<?php

$productFile = file_get_contents('products.txt', FILE_USE_INCLUDE_PATH);

/*
* product.txt file contains
* apple
* pc
* ipod
* mcdonalds
*/

$status = 'i love watching tv on my brand new apple mac';
$status = str_replace(' ', '|', $status);

if ( preg_match('/'.$status.'/m',$productFile) ) {
    echo 'the status contains a product';
}
else {
    echo 'The status doesnt contain a product';
}

答案 2 :(得分:0)

首先,我认为你混淆了变量顺序(Reference

mixed strpos ( string $haystack , mixed $needle [, int $offset = 0 ] )

然后你必须手动检查每个单词,文件中不存在整个字符串,只有一个单词。例如,使用explode()创建一个数组,并使用foreach循环。