【问题标题】:php how to wrap a very long word that has no spacesphp如何包装一个没有空格的很长的单词
【发布时间】:2018-04-18 11:42:16
【问题描述】:

在我的 php 站点中包装一个非常长的字符串时遇到问题。如果用户输入一个没有空格的非常长的字符串,它会破坏设计。例如:“DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD”我想要一种方法来破坏这个词,这样它就不会破坏设计。仅当字符串在字符之间没有空格时才会出现问题。 普通文本的外观:https://imgur.com/a/1Tazz

没有空格的长字符串看起来如何:https://imgur.com/a/a1Muf

我尝试过使用 css word-wrap 属性,但它并没有解决问题。

【问题讨论】:

  • 研究strposstrstr
  • 这是一个 css 问题,而不是 php。
  • @ThisGuyHasTwoThumbs 说了什么。或者if(strlen($string) > 100)).... 或者一些css相关的东西。 This 可以帮到你。
  • 正如@steven35 所说,这是CSS。不要尝试使用 PHP。那只是乱七八糟的。阅读:w3schools.com/cssref/tryit.asp?filename=trycss3_word-break
  • @Mr.Blue 我什至都不知道这个函数的存在!

标签: php css string break word


【解决方案1】:

使用 CSS。不要把事情复杂化...

.rectangle {
    width: 200px;
    background: red;
    border: 1px solid #000;
    word-break: break-all;
}
<div class="rectangle">
    <p>DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD</p>
</div>

您可以阅读更多here

单词 break 属性只会中断超出容器边缘的任何单词。


读了一些cmets;我想我会添加一个 PHP 版本。

<?php
$sentence = 'DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD';
$wrapped = wordwrap($sentence, 17, "\n", true);
?>
<style>
    .rectangle {
        width: 200px;
        background: red;
        border: 1px solid #000;
    }
</style>
<div class="rectangle">
    <p><?= $wrapped; ?></p>
</div>

小提琴:

这种方法有很多缺点,即需要知道容器的宽度和字符的宽度来计算断点;那么,如果你有一个响应式网站,它仍然会被破坏。

对于这样的事情,请使用 CSS 方法。为了完整起见,我只包括这种方式。

【讨论】:

    猜你喜欢
    • 2011-08-27
    • 1970-01-01
    • 2021-12-12
    • 1970-01-01
    • 1970-01-01
    • 2012-07-13
    • 2018-10-05
    • 2019-03-05
    • 1970-01-01
    相关资源
    最近更新 更多