我有一些这样的文本:(这个文件包含一些文本文件块,以line : x/x/x/x开头,以tgt-noise-margin-down : x短语结尾)
------------------------------------------------------------------------------------------------------------------------------------
linkup-record
------------------------------------------------------------------------------------------------------------------------------------
line : 1/1/6/31 link-timestamp-down : 2014-06-16:00:06:11
attained-bitrate-down : 7616 max-bitrate-up : 1024 max-bitrate-down : 4096
threshold-bitrate-up : 512 threshold-bitrate-down : 1024 max-delay-up : 15
max-delay-down : 15 tgt-noise-margin-up : 60 tgt-noise-margin-down : 60
------------------------------------------------------------------------------------------------------------------------------------
linkup-record
------------------------------------------------------------------------------------------------------------------------------------
line : 1/1/6/32 link-timestamp-down : 2014-06-16:00:06:11
attained-bitrate-down : 3616 max-bitrate-up : 512 max-bitrate-down : 2048
threshold-bitrate-up : 256 threshold-bitrate-down : 512 max-delay-up : 15
max-delay-down : 15 tgt-noise-margin-up : 60 tgt-noise-margin-down : 60
------------------------------------------------------------------------------------------------------------------------------------
linkup-record
------------------------------------------------------------------------------------------------------------------------------------
line : 1/1/6/33 link-timestamp-down : 2014-06-16:00:06:11
attained-bitrate-down : 4096 max-bitrate-up : 1024 max-bitrate-down : 4096
threshold-bitrate-up : 1024 threshold-bitrate-down : 1024 max-delay-up : 15
max-delay-down : 15 tgt-noise-margin-up : 100 tgt-noise-margin-down : 80 我想写一个带有$line参数的函数
function extarctText($line)
{
...
return $block;
}选择以$line开头的块,例如,调用$this->extarctText(1/1/6/32)应返回此结果($block):
line : 1/1/6/32 link-timestamp-down : 2014-06-16:00:06:11
attained-bitrate-down : 3616 max-bitrate-up : 512 max-bitrate-down : 2048
threshold-bitrate-up : 256 threshold-bitrate-down : 512 max-delay-up : 15
max-delay-down : 15 tgt-noise-margin-up : 60 tgt-noise-margin-down : 60 发布于 2014-08-10 17:48:19
下面的代码片段将为您提供所需的块
<?php
function extract_block($filename, $date)
{
$handle = fopen($filename, "r");
$block = '';
$block_start_text = 'line : ' . $date;
$block_end_text = 'tgt-noise-margin-down : ';
$is_inside_block = false;
while (($line = fgets($handle)) !== false) {
if($is_inside_block) {
$block .= $line;
if(strpos($line, $block_end_text) !== false){
$is_inside_block = false;
}
} else if(strpos($line, $block_start_text) !== false){
$block .= $line;
$is_inside_block = true;
}
}
fclose($handle);
return $block;
}
echo extract_block('input.txt', '1/1/6/33');https://stackoverflow.com/questions/25226760
复制相似问题