删除 <pre> 标签中的空格 - html

removing spaces in <pre> tag - html

您好,我正在使用 pre 标签显示一些文本文件,但问题出在开头和结尾,打印了 2-3 行新行。我该如何删除它? 我正在通过http请求获取文本文件,我无法修改文本文件,我必须按原样显示。

或者是否有更好的方式在 html 中显示文本文件?

<pre> 专为显示预格式化文本而设计的标签。

The <pre> tag defines preformatted text.

Text in a <pre> element is displayed in a fixed-width font (usually Courier), and it preserves both spaces and line breaks.

http://www.w3schools.com/tags/tag_pre.asp

您可以通过 PHP 在服务器端 trim() 您的字符串。

trim — Strip whitespace (or other characters) from the beginning and end of a string

http://php.net/trim

PHP

<?php
  $str = trim($str);
  echo "<pre>$str</pre>";
?>

UPD

如果您无法访问服务器端,请通过 JavaScript .trim() 方法在客户端访问。

$('<pre>' + str.trim() + '</pre>');

先trim文本左右空格,然后就可以输出trimmed前的值了。

您可以尝试使用 str_replace,我不确定您是否只需要替换 spaces 或换行符,所以我会给您举几个例子...

str_replace(' ', '', $name);

这将删除所有 space,如果您在某些地方应该使用 space,这可能会成为一个问题。

如果行尾有多个 space 而没有其他地方,那么您可以尝试...

str_replace('  ', '', $name);

任何连续有两个 space 的内容都将被删除。

如果你在Linux,而且它们是换行符,你可以试试...

str_replace('\n', '', $name);

这将删除任何以 Linux 结尾的行,对于 windows,您可以...

str_replace('\r', '', $name);

或者对于两个系统尝试...

str_replace('\r\n', '', $name);

同样,如果你有本应存在的行尾,这可能会很困难,所以如果末尾有多个行尾,你可以尝试...

str_replace('\r\n\r\n', '', $name);

哪个可能有用。只是想我会为您提供所有用例,希望这对您有所帮助。

起初我以为你可以尝试换行拆分。像这样。

<?php
    $lines = explode("\n", $html_string);
    for ($i = 0; $i < count($lines); $i++) {
        $line = trim($lines[$i]);
        $lines[$i] = $line;
    }
    $html_string = join("", $lines);
?>

但我觉得这可能还不够。在某些情况下,单词之间可能有多个 space 个字符。

另一种方法是将字符串递归分解为两个 space,然后在没有分隔符的情况下再次将其连接在一起。继续这样做,直到 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)
}

我过去遇到过类似的问题.....我认为这可能是个问题,除非您共享代码,否则无法确定(我在 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 文件来删除它们。不懂的可以留言,我帮你解决。

这只是其中一个原因,还得看你的代码,才能判断到底哪里错了