避免PHP HTML输出中的换行

避免PHP HTML输出中的换行,php,line,output,line-breaks,Php,Line,Output,Line Breaks,这里有我的打印功能: <?php // little helper function to print the results function printTag($tags) { foreach($tags as $t) { echo '<span class="' . $t['tag'] . '">'; echo $t['token'] . "/" . $t['tag']; echo '<

这里有我的打印功能:

<?php
// little helper function to print the results
function printTag($tags) {
    foreach($tags as $t) {
            echo '<span class="' . $t['tag'] . '">';
            echo $t['token'] . "/" . $t['tag'];
            echo '</span>';
            echo " ";

    }
}

$tagger = new PosTagger('lexicon.txt');
?>

下面是我从HTML表单输出的内容:

<?php
if($_POST['submitbutton'] == "Submit") {
//Check whether the form has been submitted
$tags = $tagger->tag($_POST['texttotag']);
printTag($tags);
}
?>

我的问题是,浏览器中的输出导致我的一些代码“< /代码>的中间部分出现了奇怪的断线,如下所示:

<span class="VB">Enter/VB</span> <span class="PRP$">your/PRP$</span> <span class="NN
">text/NN
</span> <span class="TO">to/TO</span> <span class="NN">tag/NN</span> <span class="RB
">here/RB
</span>
输入/VB您的/PRP$text/NN
to/to标记/NN此处/RB

这意味着我的CSS定义不适用于“中断”跨距。知道为什么会这样吗?我怎么才能阻止它?我仔细查看了一下四周,没有找到原因/解决方案。谢谢。

您的
$t['tag']
变量似乎包含换行符


您可以使用
trim($t['tag'])
来解决这个问题。

printTag函数中的$t['tag']似乎包含换行字符。您可以使用str_replace函数删除以下字符:

function printTag($tags) {
    foreach($tags as $t) {
        echo '<span class="' . $t['tag'] . '">';

        $ttag = str_replace('\n','',$t['tag']);
        $ttag = str_replace('\r','',$ttag);

        echo $t['token'] . "/" . $ttag;
        echo '</span>';
        echo " ";

    }
}
函数printTag($tags){
foreach($t标记){
回声';
$ttag=str_replace('\n','$t['tag']);
$ttag=str_replace('\r','$ttag);
echo$t['token'].“/”$ttag;
回声';
回声“;
}
}

我想弄清楚,OP代码中的换行符到底在哪里。你能为我详细说明一下吗?@Fred从html的外观上看,在标记之后,它们将是
NN\n
RB\n
。请注意,并非所有标记都包含换行符,在本例中只有2个换行符。@jeroen啊,是的,我现在看到了。我不喜欢HTML本身,我真傻。谢谢大家,干杯——~(
+1
)~@user1888121顺便说一句,一旦标签被存储(我想存储在一个数据库中…),我就会消除换行符。你可以从
jeroen的
答案中学习(我有)。它是如此的紧凑和优雅@弗雷德:做同样的事情有很多方法。我感谢杰罗恩的回答。是的,的确如此;向经验丰富的人学习总是一件好事。我一直在学习,这就是它的美,它从我们的错误和别人的错误中学习。干杯