Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将一个字符串追加到另一个字符串,但追加在新行,而不是同一行_Php_String_File - Fatal编程技术网

Php 将一个字符串追加到另一个字符串,但追加在新行,而不是同一行

Php 将一个字符串追加到另一个字符串,但追加在新行,而不是同一行,php,string,file,Php,String,File,我将在文件中的每一行追加一些内容,然后将其写入一个新文件 但是当我查看新文件时,它所做的是从旧文件中写入行,然后在新行中写入它应该附加到该行的内容 因此,如果旧文件中的第一行是 A 新文件中的第一行和第二行是 A /appendage 它应该是一行: A /appendage 如何修复代码,使附加内容与附加内容位于同一行 function writeTag($tags, $line, $file){ foreach($tags as $t){ $line .= "

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

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

因此,如果旧文件中的第一行是

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_行,我得到的输出文件如下所示:

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
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);
}

更新:更好的方法:使用
文件\u忽略\u新行
。此常量防止添加换行符

$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文件更改为您的更新,添加了
文件\u IGNORE\u NEW\u line
,现在它不再写入文件了。@JayGatz我猜不出没有换行符的行如何影响$tagger->tag函数。当您编写
$tagger->tag($line.\n“)时,它是否工作?实际上它正在工作。我不得不给服务器一些时间来显示新文件。除了,现在它忽略了所有新行。我将用输出文件的样子和它应该是什么样子或者我希望它是什么样子来更新我的问题。我会更新问题并让您知道。我使用
FILE\u IGNORE\u NEW\u LINES
和我正在寻找的输出更新了我的问题和您更新后的答案的输出。这仍然不起作用。我的文件看起来像:
A/dta$/dta&E/dta&E/DT/NN A&M/dta&M/DT/NN