这似乎是一项简单的任务,但之前的帖子都没有解决这一特定问题的细微差别。感谢您对新程序员的耐心。
我想将一个文本文件(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;
}
}
?>
现在这个简单的任务就是这个令人尴尬的混乱局面。如果您足够耐心,有人可以正确演示上述代码吗?谢谢你的关注。
答案 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);
?>
此方法允许您维护多个不同的记录(文件的每一行中有一个)并独立解释/处理它们。