【问题标题】:Echoing '<pre>' to preserve breaks conflicts with break-word回显 '<pre>' 以保留中断与中断字的冲突
【发布时间】:2025-12-07 08:20:05
【问题描述】:

我想从 TEXT 列中回显 mysql 数据,并保留中断。我正在使用&lt;pre&gt; 来执行此操作,但这会忽略style="word-break:break-word;"

伪例子:

<?php echo '<pre>'; ?>
<div style="width: 100px; word-break:break-word">
LonglonglongLonglonglongLonglonglongLonglonglongLonglonglongLonglonglongLonglonglongLonglonglongLonglonglongLonglonglongLonglonglongLonglonglongLonglonglongLonglonglong

LonglonglongLonglonglongLonglonglongLonglonglongLonglonglongLonglonglongLonglonglongLonglonglongLonglonglongLonglonglongLonglonglong
</div>
<?php echo '</pre>'; ?>

(div里面的文字是从mysql中拉出来的)

break-word; 在这个例子中没有任何效果,因为文本是用&lt;pre&gt; 标签包裹的。 如何保留原文的换行符,但显示时会导致换行符?

【问题讨论】:

  • @Erhan Sönmez 的答案如下 - 它应该是 word-wrap: break-word;你有分词:break-word;

标签: php mysql css


【解决方案1】:

使用nl2br 函数。当需要换行时,它将添加&lt;br/&gt; 标签。

<div style="width: 100px; word-break:break-word">
    <?php echo nl2br($yourVeryLongTextWithLineBreaks); ?>
</div>

【讨论】:

    【解决方案2】:

    试试这个;

    <?php echo '<pre style="width:100px; word-wrap:break-word;">'; ?>
    //some code
    <?php echo '</pre>'; ?>
    

    【讨论】:

      【解决方案3】:

      您可以使用wordwrap 将线喙插入到您的长字符串中,特别是如果它们没有像您的示例那样的空间

      $longText = 'LonglonglongLonglonglongLonglonglongLonglonglongLonglonglongLonglonglongLonglonglongLonglonglongLonglonglongLonglonglongLonglonglongLonglonglongLonglonglongLonglonglongLonglonglongLonglonglongLonglonglongLonglonglongLonglonglongLonglonglongLonglonglongLonglonglongLonglonglongLonglonglongLonglonglong';
      echo wordwrap($longText, 8, "<br />\n",true);
      

      【讨论】: