在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);
}
}