您好我有如下文字列表文件。
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"
感谢您提前提供任何帮助。
答案 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);