首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用tab / no tab结构对.txt文件进行排序

使用tab / no tab结构对.txt文件进行排序
EN

Stack Overflow用户
提问于 2014-08-07 19:18:32
回答 2查看 257关注 0票数 0

我有一个包含以下内容的.txt文件

代码语言:javascript
运行
复制
header 1
    sub header 1
    sub header 2 
header 2
    sub header 3
    sub header 4

子标头是用选项卡标记的。

我有当前的代码,但是由于某些原因,我不能对.txt文件/t进行分隔:

代码语言:javascript
运行
复制
$str = file_get_contents($_FILES["text_file"]["tmp_name"]);
$lines = explode("\n", $str);

$i= 0;

foreach($lines as $key => $value){

    if(strpos($value, '/t') !== false){ 
        echo 'tab'; 
    }else{ 
        echo 'no tab'; 
    } 

    $i++;
}

我可以使用哪个脚本将此结构排序为以下类型的数组:

代码语言:javascript
运行
复制
Array (
    [0] => Array (
        "name" => "header 1"
        "subheadings" => Array("sub header 1","sub header 2")
        )
    [1] => Array (
        "name" => "header 2"
        "subheadings" => Array("sub header 3","sub header 4")
        )
    )

谢谢

克里斯

EN

回答 2

Stack Overflow用户

发布于 2014-08-07 19:40:35

事实上,您也不应该使用!==false比较,而应该使用"\t“,就像注释中提到的EaterOfCode

在foreach循环中,您应该使用:

代码语言:javascript
运行
复制
foreach($lines as $key => $value){

    if(strpos($value, "\t") === 0){
        echo 'tab';
    }else{
        echo 'no tab';
    }

    $i++;
}

早些时候,如果tab在行尾或中间使用!==false,它也会被视为!==false,您应该检查tab是否在字符串的开头,而不是字符串的任何位置

票数 0
EN

Stack Overflow用户

发布于 2014-08-07 19:45:14

使用上面有用的注释,我提出了这个基本的解决方案。这似乎是可行的,因为我已经得到了我在原始问题中询问的数组。谢谢。

代码语言:javascript
运行
复制
foreach($lines as $key => $value){

    if(strpos($value, "\t") === false){
        $o[$h]['name'] = $value; 

        $h++;
    }
    else{ 
        if(is_array($o)){
            $o[$h-1]['subheadings'][] = trim($value);
        }
        else{
            echo 'error';
        }

        $s++;
    } 

    $a++;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25181155

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档