1

好的,我一直在寻找这个有点棘手的问题的答案。我有一个使用 JavaScript 数组列表运行随机 Google 搜索的网站。我有另一个站点与另一个站点一起允许用户输入他们自己的搜索主题。这些用户输入的值进入我喜欢称之为游乐场的巨大文本文件中。

我想要做的是让 Php 脚本将用户输入的值写入 JavaScript 数组,但使用最后输入的 JavaScript 数组中的数组编号 id 加 1。

示例:最后输入的数组是rand[60] = "hello"; Jon Doe enters "test"。php脚本写入topics.jsfie,rand[61] = "test";

我已经有一个用于 php 的文件编写脚本...

<?php
//Idea Poster
$idea = $_POST['idea'];

//Idea DATA
$data = "$idea \n\n ";

//Idea Writer
$fh = fopen("Ideas.txt", "a");
fwrite($fh, $data);

//Closer
fclose($fh);
//Reload Page
$page = "POSindex.php";
$sec = "0";
header("Refresh: $sec; $page");
?>
4

3 回答 3

1

您可以保持编写脚本不变,然后编写脚本来读取 .txt 文件并将其即时转换为 JSON 数组。

假设你想形成一个有效的 JS 文件:

echo 'var topics = ', json_encode(file('Ideas.txt'));

优化

上面的脚本总是会读取文件并将内容编码为 JSON;这可以通过保留缓存文件来优化。

if (!file_exists('topics.json') || filemtime('topics.json') < filemtime('Ideas.txt')) {
    // changes were made to Ideas.txt
    $topics_js = 'var topics = ' . json_encode(file('Ideas.txt'));
    // update cache file
    file_put_contents('topics.json', $topics_js);
    echo $topics_js;
} else {
    // read from cached file
    readfile('topics.json');
}
于 2012-05-16T02:29:27.743 回答
0

只需首先以 json 格式存储您的数据。

<?php
//Idea Poster
$idea = $_POST['idea'];

//Idea DATA
$data = "$idea \n\n ";

//Idea File (contains a json array)
$fh = fopen("Ideas.json", "r");
$contents = fread($fh, filesize("Ideas.json"));
fclose($fh);

// decode json
$ideas = json_decode($contents);
// add the new entry
$ideas[] = $idea;

// write it out 
$fh = fopen("Ideas.json", "w");
fwrite($fh, json_encode($ideas));
fclose($fh);

//Reload Page
$page = "POSindex.php";
$sec = "0";
header("Refresh: $sec; $page");
?>

或者,如果您确实需要该文件是单行纯文本,则可以使用 php 'file' 函数将其作为 php 数组读入,然后通过 'json_encode' 运行以获取 json 数组。您可能需要对文件中的双倍间距做一些事情,但基本上您应该得到您正在寻找的东西。

于 2012-05-16T02:24:15.303 回答
0

请改用 JSON 数组。从文件中读取 JSON,对其进行解码,将元素添加到数组中,对其进行编码,然后将其写出。

于 2012-05-16T02:13:26.693 回答