Hi I am using pre tag to dispaly some text files, but the problem is at the beginning and the end, 2-3 new lines are being printed. How do I remove that? I am getting the text file through http request and I cannot modify the text file, I have to display as is.
Or is there a better way to display text files in html?
答案 0 :(得分:5)
我过去遇到过类似的问题......我认为这可能是一个问题,除非你分享代码,否则无法确定(我在AngularJS应用中遇到了问题,所以变量绑定,以下代码中的等等基于那个)
假设您必须在变量textFile.data中显示数据(我将数据存储在textFile.data变量中)
<pre ng-show = "textFile.isPresent">
<span>
{{textFile.data}}
</span>
</pre>
显示html时会添加两个新行字符,因为前面标记之间的内容完全显示。因此,在“pre”标签之后和“span”标签之后的html中添加了新行,因此添加了2行。
我把它改成了
<pre ng-show = "textFile.isPresent"><span>{{textFile.data}}</span></pre>
执行此操作后删除了额外的行。请注意,您也可以通过修改css文件来删除它们。如果您不知道如何评论,我会帮助您。
这只是其中一个原因,必须看到你的代码,告诉错误是什么
答案 1 :(得分:2)
您可以尝试使用str_replace,我不确定它是否只是您需要替换的空格,或者换行符,所以我会给您几个例子...
str_replace(' ', '', $name);
如果你有空间的地方,这将删除所有可能成为问题的空格。
如果该行末尾有多个空格,那么您可以尝试...
str_replace(' ', '', $name);
将删除连续两行空格的任何内容。
如果您使用的是Linux,并且它们是换行符,您可以尝试...
str_replace('\n', '', $name);
这将删除任何以Linux结尾的行,对于Windows,你可以做...
str_replace('\r', '', $name);
或两个系统都试试......
str_replace('\r\n', '', $name);
同样,如果您的行结尾应该存在,这可能会很困难,所以如果结尾有多行结束,您可以尝试...
str_replace('\r\n\r\n', '', $name);
哪个可行。只是想我会给你所有用例,希望这可以帮助你。
答案 2 :(得分:1)
trim()
标记专为显示预格式化文本而设计。
&lt; pre&gt; tag定义了预先格式化的文本。
&lt; pre&gt;中的文字元素以固定宽度字体显示(通常 Courier),它保留了空格和换行符。
你可以在服务器端用PHP <?php
$str = trim($str);
echo "<pre>$str</pre>";
?>
你的字符串。
trim - 从头开始删除空格(或其他字符) 字符串的结尾
<强> PHP 强>
.trim()
<强> UPD 强>
如果您无法访问服务器端,只需通过JavaScript $('<pre>' + str.trim() + '</pre>');
方法在客户端执行此操作。
Parent.Parent
答案 3 :(得分:1)
起初我以为你可以尝试用新线分裂。像这样。
<?php
$lines = explode("\n", $html_string);
for ($i = 0; $i < count($lines); $i++) {
$line = trim($lines[$i]);
$lines[$i] = $line;
}
$html_string = join("", $lines);
?>
但我觉得这可能还不够。可能存在单词之间存在多个空格字符的情况。
另一种方法是以两个空格递归地爆炸字符串,并在没有分隔符的情况下再次将它连接在一起。继续这样做,直到爆炸的结果只包含一个值。
编辑:在下面添加了未经测试的POC。
recursiveTrim($str) {
$lines = explode($str, " "); // Split by 2 spaces, not one
if (count($lines) == 1)
{
return $str;
}
for ($i = 0; $i < count($lines); $i++) {
$lines[$i] = trim($lines[$i]);
}
$str = implode("", $lines);
recursiveTrim($str)
}
答案 4 :(得分:0)
首先从文本的左侧和右侧修剪空格,然后您可以在前面输出修剪后的值。