使用PHP从Text文件末尾删除/添加字符

时间:2012-04-19 16:27:58

标签: php mysql text character

我有一个自动填充搜索,它读取文本文件的内容(此文本文件必须以正确的方式格式化或搜索不起作用)。现在我以一种相当漫长的方式做这件事,因为我需要在文件的开头和结尾放置方括号。

从数据库获取数据的Php脚本:

$getData = mysql_query("SELECT Name FROM tblIngredient"); 

 while($info = mysql_fetch_array($getData)) 
 {
    $string = '{"key": "'.$info['Name'].'", "value": "'.$info['Name'].'"}, ';
    $fp = fopen('data_old.txt', 'a');
    fwrite($fp, $string);
    fclose($fp);
 }

打开data_old.txt的第二个php脚本,并在开头用“[”和最后的“]”写入,然后将其保存为data.txt:

$string1 = '[' . file_get_contents('data_old.txt') . ']';
$fp = fopen('data.txt', 'a');
fwrite($fp, $string1);
fclose($fp);

这会将数据保存为以下格式: (文件开头)

[{"key": "vodka", "value": "vodka"}, {"key": "tequila", "value": "tequila"}, {

(文件结束)

{"key": "brandy", "value": "brandy"}, {"key": "beer", "value": "beer"}, ]

我的问题是,在文件末尾有一个逗号和空格:},]我需要它看起来像这样:}]

我一直在谷歌搜索并尝试this无济于事

(我需要代码来截断data.txt文件的最后两个字符并再次写入)

感谢任何帮助

-Matt

EDIT2 ::

SCRIPT1:

$getData = mysql_query("SELECT Name FROM tblIndredient"); 

 while($info = mysql_fetch_array($getData)) 
 {
    $string = ', {"key": "'.$info['Name'].'", "value": "'.$info['Name'].'"}';
    $fp = fopen('data.txt', 'a');
    fwrite($fp, $string);
    fclose($fp);
 }

    $content = file_get_contents('data.txt');
    $content = '[' . ltrim('[, ', $content);
    file_put_contents('data.txt');

SCRIPT2:

    $string1 = '['. file_get_contents('data.txt') .']';
    $fp = fopen('data.txt', 'a');
    fwrite($fp, $string1);
    fclose($fp);

3 个答案:

答案 0 :(得分:0)

$string1 = '[' . file_get_contents('data_old.txt');
$fp = fopen('data.txt', 'a');
fwrite($fp, $string1);
fclose($fp);

$files = fopen('data.txt', 'w+');
$content = fread($files, filesize('data.txt'));
$content = substr_replace($content ,"", -2);
$content .= ']';
fwrite($files, $content);
fclose($files);

答案 1 :(得分:0)

$components = array()
while($info = mysql_fetch_array($getData)) 
{
   $components[] = '{"key": "'.$info['Name'].'", "value": "'.$info['Name'].'"}';
   $fp = fopen('data_old.txt', 'a');
   fwrite($fp, $string);
   fclose($fp);
}

$string = implode(',', $components);
// Now write the string...

答案 2 :(得分:0)

更改此行

  

$ string ='{“key”:“'。$ info ['Name']。'”,“value”:   “'。$ info ['姓名']。'”},';

  

$ string =',{“key”:“'。$ info ['Name']。'”,“value”:   “” $信息[ '名称'] '“}';

并更改此

  

$ string1 ='['。 file_get_contents('data.txt')。']';

$string1 = file_get_contents('data.txt');
$string1 = '[' . ltrim($string1, ', ') . ']';

有帮助吗?