Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP搜索和回显特定文本_Php_Search_Scripting_Echo - Fatal编程技术网

PHP搜索和回显特定文本

PHP搜索和回显特定文本,php,search,scripting,echo,Php,Search,Scripting,Echo,我有个问题。我想做的是让我的PHP代码进行搜索,直到找到输入的内容。例如,如果我搜索数字“12”,我希望它进入一个类似下面的文件,并找到其中包含“12”的行 在这种情况下,此行将包含12个字符: Light Blue = 12 = No = 20, 接下来,我希望代码在找到该行后执行的操作是读取该行左侧“=”符号之前的文本。在这种情况下,我希望我的代码为: Light Blue 我一直想这样做,任何帮助都将不胜感激 概括地说,您可以使用php fgets命令逐行处理任何文本文件。然后,您可以

我有个问题。我想做的是让我的PHP代码进行搜索,直到找到输入的内容。例如,如果我搜索数字“12”,我希望它进入一个类似下面的文件,并找到其中包含“12”的行

在这种情况下,此行将包含12个字符:

Light Blue = 12 = No = 20,
接下来,我希望代码在找到该行后执行的操作是读取该行左侧“=”符号之前的文本。在这种情况下,我希望我的代码为:

Light Blue

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

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

尝试类似的方法

$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

这里是preg_grep和explode的混合

$arr = explode("\n", file_get_contents('file.txt'));
$matches = preg_grep('/12/', $arr);
您的匹配项将位于$matches数组中

试试下面的代码

$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];
}

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

    $string = file_get_contents('file.txt');
使用以下命令:

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

您应该使用该函数。看起来您可能需要一个数据库表,而不是一个文件。该文件有多大,更新频率有多高?是的,但如果使用FGET将文件的部分加载到缓冲区中,则可能会丢失匹配项。谢谢,它可以工作!尽管如此,$matches[1]部分对于包含数字的文本不起作用。怎样才能使它也适用于数字?
    $string = file_get_contents('file.txt');
$data = file("file.txt");
$num = 12;
foreach((array)$data as $key=>$line) {
   if (strstr($line,"= $num ") || strstr($line," = $num,")) {
      echo $line;
      break;
   }
}