Php 我怎样才能大海捞针,把整条线都显示出来呢?
我怎样才能大海捞针,把整条线都显示出来呢 log.txt: 日志#5731:JohnDoe逮捕了JaneDoe 日志#5732:DonDoe逮捕了JaneDoe 我想搜索“JohnDoe”并显示整行内容Php 我怎样才能大海捞针,把整条线都显示出来呢?,php,line,Php,Line,我怎样才能大海捞针,把整条线都显示出来呢 log.txt: 日志#5731:JohnDoe逮捕了JaneDoe 日志#5732:DonDoe逮捕了JaneDoe 我想搜索“JohnDoe”并显示整行内容日志#5731:JohnDoe逮捕了JaneDoe 另外,如果一个人有多个日志,我想全部显示出来,你可以用换行符分解文本。 然后使用array\u search方法搜索所需内容,并在数组中保留该元素的键 但是,如果您的日志很大(大多数日志都是这样),我不建议使用第一种解决方案,因为整个日志都必须加
日志#5731:JohnDoe逮捕了JaneDoe
另外,如果一个人有多个日志,我想全部显示出来,你可以用换行符分解文本。 然后使用
array\u search
方法搜索所需内容,并在数组中保留该元素的键
但是,如果您的日志很大(大多数日志都是这样),我不建议使用第一种解决方案,因为整个日志都必须加载并放入一个数组中。这会消耗大量的资源
我宁愿喜欢
<?php
$logfilepath = 'path/to/log.txt';
function searchLog($logfilepath, $searchQuery) {
$fileresource = fopen($logfilepath, 'r');
while (($buffer = fgets($handle)) !== false) {
//now search in buffer
if(strpos($buffer, $searchQuery) !== false) {
return $buffer;
}
}
}
如果数据源是一个文件,“整行”的定义是一个换行分隔符,我将使用它将数据分解成一个数组,然后循环遍历它:
function findLines($file_path, $needle) {
$file_lines = file($file_path);
foreach($file_lines as $line) {
if(strpos($line, $needle) !== false) {
$matching_lines[] = $line;
}
}
return $matching_lines;
}
$needle = 'JohnDoe';
$log_entries = findLines('/path/to/log.txt', $needle);
迭代所有行并显示/JohnDoe/
是否匹配?
function findLines($file_path, $needle) {
$file_lines = file($file_path);
foreach($file_lines as $line) {
if(strpos($line, $needle) !== false) {
$matching_lines[] = $line;
}
}
return $matching_lines;
}
$needle = 'JohnDoe';
$log_entries = findLines('/path/to/log.txt', $needle);