使用 PHP 将 txt 数据文件转换为结构化 JSON
convert a txt data file to structured JSON using PHP
我有一个大的纯文本文件,它的数据是这样的:
65781>foo-98503>bar-12783>baz-71284>foobar
我想将其转换为 JSON 格式,因此内容应该是有效的 JSON:
{
"65781":"foo",
"98503":"bar",
"12783":"baz",
"71284":"foobar"
}
因为我在互联网上找不到任何可以为我正确执行此操作的工具,所以我不知道该怎么做。我决定编写一个 PHP 函数来转换我的文件。这是我的代码:
<?php
function txt_to_json_converter($sep1, $sep2, $input_file, $output_file) {
$data = file_get_contents($input_file) or die("Unable to open file...");
$exploded = explode($sep1, $data);
$array = array();
foreach ($exploded as $item) {
$pair = explode($sep2, $item);
$array[$pair[0]] = $pair[1];
}
$j = json_encode($array);
// save to disk
$myfile = fopen($output_file, "w") or die("Unable to open file...");
fwrite($myfile, $j);
fclose($myfile);
echo 'Done!';
}
txt_to_json_converter("-", ">", "my_exported_data.txt", "structured_data.json")
?>
然后,我收到这个错误:
Fatal Error: Out of memory (allocated number) (tried to allocate another number bytes) in script.php
我试图在我的代码顶部添加这一行,但它没有解决我的问题:
ini_set('memory_limit', '2048M');
我也在 php.ini
文件中更改了这一行:
; Maximum amount of memory a script may consume
; http://php.net/memory-limit
memory_limit=2048M
有什么帮助吗?
首先,调用php_info()
函数,检查memory_limit
这个值是否设置正确。
如果未设置,请确保在此更改后重新启动 Apache。然后检查没有其他 php.ini
文件覆盖主 php.ini
另外,请确保 php_value memory_limit xxxM
标志未在 .htaccess
文件中设置。
如果设置了,请尝试增加这个值,例如4096M或更大,重启Apache后,再次测试你的功能。
你说你写这个函数是迫不得已?
许多在线工具可以为您做到这一点并挽救您的生命。我测试了 Vertopal - TXT to JSON 并在设置中设置了分隔符。结果很满意
我有一个大的纯文本文件,它的数据是这样的:
65781>foo-98503>bar-12783>baz-71284>foobar
我想将其转换为 JSON 格式,因此内容应该是有效的 JSON:
{
"65781":"foo",
"98503":"bar",
"12783":"baz",
"71284":"foobar"
}
因为我在互联网上找不到任何可以为我正确执行此操作的工具,所以我不知道该怎么做。我决定编写一个 PHP 函数来转换我的文件。这是我的代码:
<?php
function txt_to_json_converter($sep1, $sep2, $input_file, $output_file) {
$data = file_get_contents($input_file) or die("Unable to open file...");
$exploded = explode($sep1, $data);
$array = array();
foreach ($exploded as $item) {
$pair = explode($sep2, $item);
$array[$pair[0]] = $pair[1];
}
$j = json_encode($array);
// save to disk
$myfile = fopen($output_file, "w") or die("Unable to open file...");
fwrite($myfile, $j);
fclose($myfile);
echo 'Done!';
}
txt_to_json_converter("-", ">", "my_exported_data.txt", "structured_data.json")
?>
然后,我收到这个错误:
Fatal Error: Out of memory (allocated number) (tried to allocate another number bytes) in script.php
我试图在我的代码顶部添加这一行,但它没有解决我的问题:
ini_set('memory_limit', '2048M');
我也在 php.ini
文件中更改了这一行:
; Maximum amount of memory a script may consume
; http://php.net/memory-limit
memory_limit=2048M
有什么帮助吗?
首先,调用php_info()
函数,检查memory_limit
这个值是否设置正确。
如果未设置,请确保在此更改后重新启动 Apache。然后检查没有其他
php.ini
文件覆盖主php.ini
另外,请确保php_value memory_limit xxxM
标志未在.htaccess
文件中设置。如果设置了,请尝试增加这个值,例如4096M或更大,重启Apache后,再次测试你的功能。
你说你写这个函数是迫不得已?
许多在线工具可以为您做到这一点并挽救您的生命。我测试了 Vertopal - TXT to JSON 并在设置中设置了分隔符。结果很满意