我正在将文本文件加载到数组中:
<?php
$filename = "data.txt";
$array = file($filename, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
?>
该文件包含某些行,以&#34; Data&#34;开头。这些行作为单独的值加载到数组中。
我想要做的只是从数组中提取那些值并将它们保存为一个单独的文件,每个文件都放在一个新行上。
我将如何在数组中搜索这些特定值并执行上述操作?
答案 0 :(得分:1)
当你在一个数组中有你的文件行时,你会陷入迭代数组(行)并检查该行是否以 Data (Send
)开头。如果是这样,您只需将该行保存到0 === mb_strpos($line, 'Data')
的其他文件中。
或者您可以在控制台中运行fwrite()
:
grep
答案 1 :(得分:0)
如果您有数组,则可以使用函数array_filter过滤值。 http://php.net/manual/en/function.array-filter.php 如果你想在数组中保留元素,则回调函数必须返回true,如果你想取消它,则返回false,例如因为那个元素不同而你需要查找。 你需要检查的内部功能是否有你要找的单词。
使用preg_match检查元素和正则表达式的值。 http://php.net/manual/en/function.preg-match.php
测试正则表达式的有用链接: https://regex101.com/
简单!
示例:
<?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);
答案 2 :(得分:0)
以下代码将提取以“Data”开头的所有行(区分大小写)并将它们附加到文件“data_rows.txt”。
$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);
}
}