【问题标题】:PHP search and echo specific textPHP 搜索和回显特定文本
【发布时间】:2012-06-12 20:14:07
【问题描述】:

我遇到了问题。我想要做的是让我的 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

我一直想这样做,任何帮助将不胜感激!

【问题讨论】:

  • 你应该使用explode()函数。
  • 看起来您可能需要一个数据库表,而不是一个文件。
  • 文件有多大,多久更新一次?

标签: php search scripting echo


【解决方案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');

【讨论】:

  • 谢谢,它有效!虽然, $matches[1] 部分不适用于其中包含数字的文本。如何使它也适用于数字?
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    试试这样的

    $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 更简单

    【讨论】:

      【解决方案4】:

      这里是preg_grep和explode的混合。

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

      您的匹配项将在 $matches 数组中;

      【讨论】:

      • 是的,但是如果您使用 fgets 将文件的部分部分加载到缓冲区中,那么您可能会错过匹配。
      【解决方案5】:

      使用这个:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-29
        • 2012-12-06
        • 2015-12-25
        • 2012-06-25
        • 1970-01-01
        • 2012-12-24
        相关资源
        最近更新 更多