【问题标题】:HTML - Get the number of lines in a LONGTEXT string from a MySQL databaseHTML - 从 MySQL 数据库中获取 LONGTEXT 字符串中的行数
【发布时间】:2015-06-22 02:13:48
【问题描述】:

如何从我们使用 HTML 或 PHP 从 MySQL 数据库中检索到的 LONGTEXT 字符串中获取行数?例如,假设我有这个文本:

Lorem ipsum dolor sit amet,consectetur adipiscing elit。 eleifend 的 Nullam imperdiet condimentum libero。 Mauris ac justo in purus tempor iaculis vitae at turpis。 Cras quis facilisis libero。 Nam molestie neque id lacus cursus rut​​rum。 Aliquam vestibulum blandit diam,一只placerat

我希望能够找出文本占用了多少行或多少“空间”。

它是一行,但它显示为 3 行,所以,我想得到 3,通过使用 PHP 执行类似 $num = count_lines($string); 之类的操作,或者比这更复杂的操作。

这是用于格式化我正在制作的论坛网站,根据文本占用的空间动态更改某些方面

我尝试过类似的方法:

<?php
  $num = substr_count($string, "\n");
?>

<?php
  $num =  count(preg_split('/\n|\r/',$str));
?>

但它们不起作用,因为我正在从 MySQL 数据库中获取字符串。

另外,我希望根据边距更改数字。可以看到,里面的行数:

jsfiddle.net/n58z74pgjsfiddle.net/6nkvLzzn 中的行数不同,因为文本的样式为margin-right:10cm

那么,有没有办法只使用 HTML 或 PHP 来获取字符串中的行数?也许通过计算文本占用的像素数,然后做一些基本的数学运算来找出行数?

【问题讨论】:

  • 其实你的例子是单行的。
  • @Orion 但它显示为 3 行,我只是澄清了这个问题。我的问题是 MySQL 数据库中的文本是 1 行。
  • 这与从数据库中获取字符串无关,它是“一行”的定义。您应该更好地搜索 Javascript 库。根据您的定义,服务器端的所有内容都无法正常工作。
  • 我认为算上wordsstring length 而不是lines
  • 可能是 responsive design 是你要找的。​​span>

标签: php html mysql


【解决方案1】:

听起来你只需要文本的高度,获得行数意味着你仍然需要乘以 lineHeight。

要获取页面上 div 的实际宽度(以像素为单位),您可以简单地使用以下 JS

document.getElementById("DivID").clientHeight;

在 PHP 中调整大小将变得更加困难,而且您还必须考虑这样一个事实,即每次需要调整大小时都必须进行网络调用。 (不是很 web 2.0) PHP(您的服务器)通常实际上并不知道用户浏览器的宽度等...用户可以显式调整大小,因此通常应在客户端处理图形和布局。

【讨论】:

    【解决方案2】:

    如果您从数据库中检索的字符串中没有换行符,那么它在逻辑上不能分成 3 行。想一想:“线”,除了被换行符打断之外,是一个相对的东西。为了知道字符串将占用多少行,您必须知道您网站中的容器大小和字母大小。

    如果你澄清了为什么你需要知道,这个问题会更容易回答

    【讨论】:

    • 我确实澄清了:This is for formatting a forums website that I'm making, changing certain aspects dynamically based on how much room the text takes up
    • 是的,但具体是哪些方面?另外,动态意味着 php 或 js?
    • 某些文本/形状的图像和颜色。我更喜欢使用php(这就是我在问题中所说的)。
    • 我建议您根据我之前解释的内容使用js来计算行号,这是一个链接:stackoverflow.com/questions/783899/…
    【解决方案3】:

    正如其他人所提到的,您无法限制数据库中的行数,因为您不知道有多少文本将代表三行。这就是我会做的。检索整个文本并将其放入像这样的 div 中

    <div class="post"><?PHP echo $longtext; ?></div>
    

    然后在您的 CSS 中执行此操作

    div.post {
       height: 3em;
       overflow: hidden
    }
    

    这将为您提供一个三行高 (3em) 的 div,并隐藏更多内容。您可能需要稍微调整一下 3.25em 左右来调整行距。

    【讨论】:

      猜你喜欢
      • 2012-01-22
      • 1970-01-01
      • 2016-04-03
      • 2018-04-07
      • 1970-01-01
      • 2011-02-20
      • 2015-10-15
      • 2022-07-21
      • 1970-01-01
      相关资源
      最近更新 更多