【问题标题】:Appending one string to another, but appendage is on new line not same line将一个字符串附加到另一个字符串,但附件在新行而不是同一行
【发布时间】:2013-06-16 17:01:33
【问题描述】:

我在文件的每一行附加一些内容,然后将其写入一个新文件。

但是当我查看新文件时,它正在做的是从旧文件中写入行,然后在新行中写入应该附加到该行的内容。

所以如果旧文件的第一行是

A

新文件的第一行和第二行是

A
/appendage

应该是一行:

A /appendage

我怎样才能修复我的代码,使附件与它们被附加到的内容在同一行?

function writeTag($tags, $line, $file){
    foreach($tags as $t){
        $line .= " /".$t['tag']." ";
        fwrite($file, $line);
    }
}
$tagger = new PosTagger('lexicon.txt');
$lines = file('dictionary.txt');
$out = fopen("tagged.txt", "w");
foreach($lines as $line){
    $tags = $tagger->tag($line);
    writeTag($tags, $line, $out);
}

更新:

随着 bwoebi 的更新答案添加 IGNORE_NEW_LINES,我得到的输出文件如下所示:

A /DT A$ /DT A&E /DT A&E /DT  /NN A&M /DT A&M /DT  /NN
A&P /DT A&P /DT  /NN

我正在寻找的是:

A /DT
A$ /DT
A&E /DT
A&E /DT /NN
A&M /DT
A&M /DT /NN
A&P /DT
A&P /DT /NN

【问题讨论】:

    标签: php string file


    【解决方案1】:

    file() 返回字符串直到换行符 (\n) 包含:所以当字符串的最后一个字符为 \n 时将其切断.

    foreach ($lines as $line) {
        if ($line[strlen($line)-1] == "\n")
            $line = substr($line, 0, -1);
        $tags = $tagger->tag($line);
        writeTag($tags, $line, $out);
    }
    

    更新:更好的方法:使用FILE_IGNORE_NEW_LINES。此常量可防止添加换行符。

    $lines = file('dictionary.txt', FILE_IGNORE_NEW_LINES);
    

    对更新问题的回答: 每次完成一个$tag 后添加一个换行符:

    function writeTag($tags, $line, $file){
        foreach($tags as $t){
            $line .= " /".$t['tag']." ";
            fwrite($file, $line."\n");
        }
    }
    

    【讨论】:

    • 我将我的 php 文件更改为您的更新,添加了FILE_IGNORE_NEW_LINES,现在它不再写入文件了。
    • @JayGatz 我无法猜测没有换行符的行如何影响 $tagger->tag 函数。当你写$tagger->tag($line."\n");时,它有效吗?
    • 实际上它正在工作。我不得不给我的服务器一些时间来显示新文件。除了,现在它忽略了所有的新行。我将使用输出文件的外观以及它的外观或我希望它的外观来更新我的问题。我会更新问题并通知您。
    • 我使用FILE_IGNORE_NEW_LINES 和我正在寻找的输出更新了我的问题,得到的输出是您更新后的答案。
    • 还是不行。我的文件看起来像:A /DT A$ /DT A&E /DT A&E /DT /NN A&M /DT A&M /DT /NN
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-06
    • 2011-05-25
    • 1970-01-01
    • 2021-04-18
    • 2015-12-29
    相关资源
    最近更新 更多