如何使用php重建文本文件

时间:2016-01-08 07:12:15

标签: php text

您好我有如下文字列表文件。

0  // means Type
0 1 1 "Kris" 
1 1 1 "Short Sword" 
2 1 1 "Rapier" 
3 1 1 "Katache" 
4 1 1 "Scimitar" 
5 1 1 "Blade" 
6 1 1 "Gladius" 
end // end of first type


1 // type
0 1 1 "Small Axe" 
1 1 1 "Hand Axe" 
2 1 1 "Double Axe" 
3 1 1 "Tomahawk" 
4 1 1 "Fairy Axe" 
end // end of 2nd type

超过1000行。问题是如何重建tham转义空行和“结束”单词并将第一行作为类型编号如bellow

0 0 1 1 "Kris" 
0 1 1 1 "Short Sword" 
0 2 1 1 "Rapier" 
0 3 1 1 "Katache" 
0 4 1 1 "Scimitar" 
0 5 1 1 "Blade" 
0 6 1 1 "Gladius" 
1  0 1 1 "Small Axe" 
1  1 1 1 "Hand Axe" 
1  2 1 1 "Double Axe" 
1  3 1 1 "Tomahawk" 

感谢您提前提供任何帮助。

1 个答案:

答案 0 :(得分:0)

如果您根本不关心性能,只想重建文件,请使用file("path")打开文件,将整个文件读取为数组。 在双引号之前浏览数组并阅读所有内容。删除所有空格并将其转换为整数。然后检查该值是否为最大值,如果存储它。 然后使用你拥有的最大值并添加你想要的approprite 0。

试试这个:

$file = file("test.txt");

$bigValue = 0; 

foreach($file as &$value) 
{
   $end = strpos($value, '"'); 

    if($end !== false) 
    {
         $subStr = substr($value, 0, $end);

         $subStr = trim($subStr, " ");

         $value = $subStr . substr($value, $end, strlen($value)); 

         if(intval($subStr) > $bigValue)
             $bigValue = intval($subStr); 

    }
}

echo $bigValue; 

//add the 0.
foreach($file as &$value) 
{
    $end = strpos($value, '"'); 

    if($end !== false)
    {
        $subStr = substr($value, 0, $end);

        $zero = ""; 

        if(strlen($subStr) < $bigValue)
        {
            for($x = 0; $x < ($bigValue- strlen($subStr)); $x++)
            {
                $zero .= "0"; 
            }
        }

        $subStr = $zero . $subStr; 
        $newStr = "";

        //add the spaces. 
        for($x = 0; $x < strlen($subStr); $x++)
        {
            $newStr .= $subStr{$x} . " "; 
        }

        $value = $newStr . substr($value, $end, strlen($value)); 
    }

}


print_r($file);