PHP / JS;将不可见的换行符或换行符转换为html标记以进行打印

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP / JS;将不可见的换行符或换行符转换为html标记以进行打印相关的知识,希望对你有一定的参考价值。

我正在尝试使用javascript从dbase打印出文本字段,其中文本字段由php提供给具有id的textarea。 print javascript函数使用getElementById从textarea获取内容并打印它。但这是问题所在。要在textarea中正确显示,文本字段中会有换行符。这些在textarea中是不可见的。它们只是出现在换行符中。 (它们在dbase表中使用PHP管理员也是不可见的。它们也显示在那里作为换行符)。

但是,要在打印文本时显示换行符,需要将它们转换为<br>。其他,你看,并打印一个runown句子

我想我需要在javascript变量中搜索一些东西,也许是 n并替换为 但是,我似乎无法在打印页面中显示换行符(基于html。)

谁能建议正确的方法来做到这一点?谢谢。

有缺陷的代码:js f

unction printit(id) {
var toprint = document.getElementById(id).innerHTML;
toprint = toprint.replace("
","<br>");
win = window.open();
    self.focus();
    win.document.open();
    win.document.write('<'+'html'+'><'+'head'+'><'+'style'+'>');
    win.document.write('body, td { font-family: Verdana; font-size: 10pt;}');
    win.document.write('<'+'/'+'style'+'><'+'/'+'head'+'><'+'body'+'>');
    win.document.write(toprint); 
    win.document.write('<'+'/'+'body'+'><'+'/'+'html'+'>');
    win.document.close();
    win.print();
    win.close();
  }

HTML

<textarea id="textarea">A whole bunch
of text
with line breaks
goes here
</textarea><a href="javascript:void(0);" onclick="printit('textarea');">Print text</a>
答案

你可能只是替换了第一个换行符。尝试使用全局标志来替换它们:

toprint = toprint.replace(/
/g, '<br />');
另一答案

我相信你需要它完全按照它出现在文本区域的方式打印出来。 textarea对其内容应用换行。这些不是换行符,不能替换为换行符。

将内容附加到与打印前文本宽度相同的元素。

...
win.document.write('<'+'/'+'style'+'><'+'/'+'head'+'><'+'body'+'>');

// element with same width as textarea
win.document.write('<div style="width: '+ document.getElementById(id).offsetWidth +'px">');
win.document.write(toprint); 
win.document.write('</div>'); 

win.document.write('<'+'/'+'body'+'><'+'/'+'html'+'>');
...
另一答案

在HTML中显示换行符的最佳解决方案是使用CSS white-space属性。

以上是关于PHP / JS;将不可见的换行符或换行符转换为html标记以进行打印的主要内容,如果未能解决你的问题,请参考以下文章

sql带条件多条数据合并为一条数据并换行

github中的 README.md 内容怎么换行

js正则表达式——元字符

php ,字符串

js计算换行符的长度

BeautifulSoup 将不需要的换行符添加到字符串 Python3.5