PHP搜索和回显特定文本

时间:2012-06-08 18:47:10

标签: php search scripting echo

我遇到了问题。我想要做的是让我的PHP代码进行搜索,直到找到输入的内容。例如,如果我搜索了数字“12”。我想让它进入如下文件中的文件,并找到其中包含“12”的行。

Dark Green = 11 = No = 20,
Light Blue = 12 = No = 20,
Lime Green = 13 = No = 20,
Sensei Gray = 14 = Yes = 0,

在这种情况下,这一行将包含12个:

Light Blue = 12 = No = 20,

接下来我希望代码在找到该行之后执行该操作,以便它读取位于其左侧“=”符号之前的文本。在这种情况下,我希望我的代码阅读:

Light Blue

我一直想这样做,任何帮助都会非常感激!

5 个答案:

答案 0 :(得分:1)

尝试以下代码

$string = 'Dark Green = 11 = No = 20,
Light Blue = 12 = No = 20,
Lime Green = 13 = No = 20,
Sensei Gray = 14 = Yes = 0';


$string = explode(',',$string);
foreach($string as $row)
{
    preg_match('/^(\D+)\s=\s(\d+)\s=\s(\D+)\s=\s(\d+)/', trim($row), $matches);
    echo $matches[1];//Dark Green
    echo $matches[2];//11
    echo $matches[3];//No
    echo $matches[4];//20
}

在循环中用于检查要搜索的单词

喜欢那个

if($matches[1] == 'Dark Green')
{
   echo $matches[1];
}

   if($matches[2] == 11)
    {
       echo $matches[2];
    }

(...) 要获取文件中的文本,请尝试使用

    $string = file_get_contents('file.txt');

答案 1 :(得分:0)

从广义上讲,您可以使用php fgets命令逐行处理任何文本文件。然后,您可以在每一行上运行操作,使用上面建议的爆炸来查找字符串并打印它。

答案 2 :(得分:0)

尝试这样的事情

$lines = explode("\n",$filetext);
$searchString = preg_quote('12','/');
foreach($lines as $line) {
    preg_match("/([^=])\s*=\s*$searchString/");
    if($matches[1]) {
         print $matches[1]; 
         break;
    }
}

其中$ filetext中的文本使用fgets逐行读取(然后你不需要爆炸)或甚至更简单地使用file_get_contents

答案 3 :(得分:0)

这是preg_grep和explode的混合物。

$arr = explode("\n", file_get_contents('file.txt'));
$matches = preg_grep('/12/', $arr);

您的匹配将位于$ matches数组中;

答案 4 :(得分:0)

使用它:

$data = file("file.txt");
$num = 12;
foreach((array)$data as $key=>$line) {
   if (strstr($line,"= $num ") || strstr($line," = $num,")) {
      echo $line;
      break;
   }
}
相关问题