【发布时间】:2015-07-09 19:33:01
【问题描述】:
您好我正在使用 pre 标签来显示一些文本文件,但问题是在开头和结尾,正在打印 2-3 新行。我该如何删除它? 我通过 http 请求获取文本文件,但无法修改文本文件,我必须按原样显示。
或者有没有更好的方法在 html 中显示文本文件?
【问题讨论】:
-
你能告诉我们你正在使用的代码吗?
您好我正在使用 pre 标签来显示一些文本文件,但问题是在开头和结尾,正在打印 2-3 新行。我该如何删除它? 我通过 http 请求获取文本文件,但无法修改文本文件,我必须按原样显示。
或者有没有更好的方法在 html 中显示文本文件?
【问题讨论】:
我过去遇到过类似的问题.....我认为这可能是一个问题,除非您共享代码,否则无法确定(我在我的 AngularJS 应用程序中遇到了问题,所以变量绑定,以下代码中的等都是基于此)
假设您必须在变量 textFile.data 中显示数据(我将数据存储在 textFile.data 变量中)
<pre ng-show = "textFile.isPresent">
<span>
{{textFile.data}}
</span>
</pre>
显示 html 时添加了两个换行符,因为 pre 标记之间的任何内容都会被准确显示。因此添加了 2 行,因为 html 中的“pre”标记之后和“span”标记之后的新行。
我改成这个了
<pre ng-show = "textFile.isPresent"><span>{{textFile.data}}</span></pre>
执行此操作后删除了多余的行。请注意,您也可以通过修改 css 文件来删除它们。如果您不知道如何,请发表评论,我会帮助您。
这只是其中一个原因,得看你的代码,才能知道到底哪里错了
【讨论】:
您可以尝试使用 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);
这可能有效。只是想我会给你所有的用例,希望这对你有所帮助。
【讨论】:
标签内吗?我会删除 HTML 中所有可能的空格,所以有textfile
起初我以为你可以尝试用新行拆分。像这样。
<?php
$lines = explode("\n", $html_string);
for ($i = 0; $i < count($lines); $i++) {
$line = trim($lines[$i]);
$lines[$i] = $line;
}
$html_string = join("", $lines);
?>
但我觉得这可能还不够。可能存在单词之间有多个空格字符的情况。
另一种方法是将字符串递归地分解两个空格,然后在没有分隔符的情况下再次将其连接在一起。继续这样做,直到explode 的结果只包含一个值。
编辑:在下面添加了一个未经测试的 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)
}
【讨论】:
<pre>标签专为显示预格式化文本而设计。
标签定义了预格式化的文本。元素中的文本以固定宽度的字体显示(通常 Courier),它同时保留了空格和换行符。
您可以在服务器端通过 PHP trim() 您的字符串。
trim — 从开头去掉空格(或其他字符) 字符串结束
PHP
<?php
$str = trim($str);
echo "<pre>$str</pre>";
?>
UPD
如果您无法访问服务器端,只需在客户端通过 JavaScript .trim() 方法进行。
$('<pre>' + str.trim() + '</pre>');
【讨论】:
先修剪文本左右的空格,然后在pre中输出修剪后的值。
【讨论】:
<pre id="preVal"> echo 1 </pre> <script type="text/javascript"> var x = document.getElementById("preVal"); x.innerHTML = x.innerHTML.trim(); </script>