PHP搜索和包含字符串的echo数组

时间:2014-02-09 20:36:44

标签: php arrays search explode

这似乎是一项简单的任务,但之前的帖子都没有解决这一特定问题的细微差别。感谢您对新程序员的耐心。

我想将一个文本文件(comments.txt)划分为数组,并将波形符作为分隔符。然后我想将用户字符串变量(nam)传递给PHP并搜索此字符串。结果应该回显包含其中任何位置的字符串的每个整个数组。

例如:
        排列     (         [0] =>热狗         [1] =>牛奶         [2] =>狗捕手     )

搜索“狗”会在屏幕上产生: 热狗捕手

<?php

 $search = $_POST['nam'];
 $file = file_get_contents('comments.txt');
 $split = explode("~", $file);

 foreach ($split as $subarray)
 {
    if(in_array($search, $subarray))
    {
       echo $subarray;
    }
 }
?>

现在这个简单的任务就是这个令人尴尬的混乱局面。如果您足够耐心,有人可以正确演示上述代码吗?谢谢你的关注。

2 个答案:

答案 0 :(得分:0)

假设你有'comments.txt',它包含类似的内容:

hamburger~hotdog~milk~dog catcher~cat~dogbone

然后这应该工作

$comments = file_get_contents("comments.txt");
$array = explode("~",$comments);

$search = "dog";
$matches = array();

foreach($array as $item){         // check each comment in array
    if(strstr($item, $search)){   // use strstr to check if $search is in $item
        $matches[] = $item;       // if it is, add it to the array $matches
    }
}
var_dump($matches);

答案 1 :(得分:0)

首先,您可能想尝试使用file()而不是file_get_contents()。这应该做你想要的:

<?php
$search = $_POST['nam'];
$file = file('contents.txt');
$matches = array();
foreach ($file as $k => $v) {
    if ($a = explode('~', $v)) {
        foreach ($a as $possible_match) {
        if (preg_match('"/'. $search .'"/i', $possible_match)) {
            $matches[] = $possible_match;
        }
    }
}
print_r($matches);
?>

此方法允许您维护多个不同的记录(文件的每一行中有一个)并独立解释/处理它们。