我怎样才能从使用HTML或PHP从MySQL数据库中检索到的LONGTEXT
字符串中获取行数?例如,假设我有这样的文字:
Lorem ipsum dolor坐下来,精神上的精神。在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 rutrum。 Aliquam vestibulum blandit diam,一个地方
我希望能够找出文本占用多少行,或多少“空间”。
它是一行,然而,它显示为3行,所以,我想通过使用PHP执行3
之类的操作来获得$num = count_lines($string);
,或者更复杂的东西。
这是为了格式化我正在制作的论坛网站,根据文本占用的空间动态更改某些方面
我尝试过这样的事情:
<?php
$num = substr_count($string, "\n");
?>
和
<?php
$num = count(preg_split('/\n|\r/',$str));
?>
但它们不起作用,因为我从MySQL数据库中获取字符串。
另外,我希望根据边距更改数字。如您所见,行数:
jsfiddle.net/n58z74pg与jsfiddle.net/6nkvLzzn中的行数不同,因为文字的格式为margin-right:10cm
。
那么,有没有办法只使用HTML或PHP来获取字符串中的行数?也许通过计算文本占用的像素数,然后做一些基本的数学运算来找出行数?
答案 0 :(得分:2)
听起来你只需要文本的高度,获得行数意味着你仍然需要乘以lineHeight。
要获得页面上div的实际宽度(以像素为单位),您只需使用以下JS
即可document.getElementById("DivID").clientHeight;
在PHP中调整大小会变得更加困难,而且您还必须考虑每次需要调整大小时都必须进行Web调用的事实。 (不是非常网络2.0) PHP(您的服务器)通常不会真正知道用户浏览器的宽度等...用户可以显式调整大小,因此通常应在客户端处理图形和布局。
答案 1 :(得分:1)
如果您从数据库中检索的字符串中没有换行符,那么它在逻辑上不能分为3行。想一想:&#34; line&#34;除了被换行符打破外,还是一个相对的东西。为了知道字符串占用了多少行,您必须知道容器的大小和字母大小将在您的网站中。
如果您澄清了为什么需要知道
,这个问题会更容易回答答案 2 :(得分:0)
正如其他人所提到的,你不能限制数据库中的行数,因为你不知道有多少文本代表三行。这就是我要做的。检索整个文本并将其放入div中,如此
<div class="post"><?PHP echo $longtext; ?></div>
然后在你的CSS中做这个
div.post {
height: 3em;
overflow: hidden
}
这将为您提供三行高(3em)的div并隐藏更多内容。您可能需要调整一个小谎言3.25em左右来调整行间距。