簡體   English   中英

如何在特定單詞之后選擇字符串的一部分?

[英]How to select a part of a string, after a specific word?

我有一些這樣的文本:(此文件包含一些文本文件塊,以以下line : x/x/x/x開頭line : x/x/x/x ,以tgt-noise-margin-down : 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 

以下代碼片段將為您提供所需的功能

<?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');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM