在PHP数组中搜索以特定单词开头的值

在PHP数组中搜索以特定单词开头的值,php,arrays,search,word,Php,Arrays,Search,Word,我正在将文本文件加载到数组中: <?php $filename = "data.txt"; $array = file($filename, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); ?> 该文件包含以单词“Data”开头的某些行。这些行在数组中作为单独的值加载 我想做的是从数组中只提取那些值,并将它们保存为一个单独的文件,每个文件都在一个新行上 如何在数组中搜索这些特定值并执行上述操作?当数组中有文件的行时,您必须迭

我正在将文本文件加载到数组中:

<?php

$filename = "data.txt";

$array = file($filename, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);

?>

该文件包含以单词“Data”开头的某些行。这些行在数组中作为单独的值加载

我想做的是从数组中只提取那些值,并将它们保存为一个单独的文件,每个文件都在一个新行上


如何在数组中搜索这些特定值并执行上述操作?

当数组中有文件的行时,您必须迭代数组(行)并检查行是否以数据开头(
0==mb_strpos($line,'Data')
)。如果是这样,只需使用
fwrite()
将该行保存到另一个文件中即可

或者您可以在控制台中运行
grep

grep '^Data' input.txt > output.txt

如果你有一个数组,你可以用函数数组过滤值。 若要将元素保留在数组中,则回调函数必须返回true;若要取消设置元素,则必须返回false,例如,因为该元素与您要查找的元素不同。 内部功能,你必须检查是否有一个词,你在寻找或没有

使用preg_match检查元素和正则表达式的值。

测试正则表达式的可用链接:

简单

例如:

<?php
    $arrayData = [
        'DATA: something',
        'DATA: carrot',
        'DATA: coffee',
        'Mercedes-Benz C32 AMG',
        'DATA: hot coffee'
    ];
    function checkArray($value){
        $re = '/^DATA:(.*)coffee(.*)/m';
        if (preg_match($re, $value)) {
            return true;
        } else {
            return false;
        }
    }
    $filtered = array_filter($arrayData, 'checkArray');
    var_dump($fitlered);

以下代码将提取以“Data”(区分大小写)开头的所有行,并将它们附加到文件“Data_rows.txt”中


你不能使用数据库吗?也许你需要文件,但这听起来像是数据库的工作。或者,如果必须使用文件,请尝试使用更易于处理和提取数据的结构,例如XML
$filename = "data.txt";
$array = file($filename, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);

foreach( $array as $item ) {
    if( strpos($item, "Data") === 0 ) {
        file_put_contents("data_rows.txt", "{$item}\n", FILE_APPEND);
    }
}