删除 <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.
您可以通过 PHP 在服务器端 trim()
您的字符串。
trim — Strip whitespace (or other characters) from the beginning and
end of a string
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 文件来删除它们。不懂的可以留言,我帮你解决。
这只是其中一个原因,还得看你的代码,才能判断到底哪里错了
您好,我正在使用 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.
您可以通过 PHP 在服务器端 trim()
您的字符串。
trim — Strip whitespace (or other characters) from the beginning and end of a string
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 文件来删除它们。不懂的可以留言,我帮你解决。
这只是其中一个原因,还得看你的代码,才能判断到底哪里错了