Php <;br/>;
在PHP中,我试图以最大字符限制显示行的内容,所以Php <;br/>;,php,mysql,select,while-loop,Php,Mysql,Select,While Loop,在PHP中,我试图以最大字符限制显示行的内容,所以 $result = mysql_query("SELECT * FROM `news`"); $length = 350; // Show first 350 characters of row, then cut it off while($row = mysql_fetch_array($result)) { $show = nl2br(substr($row['content'], 0, $length)); } 注:代码标签对我来
$result = mysql_query("SELECT * FROM `news`");
$length = 350; // Show first 350 characters of row, then cut it off
while($row = mysql_fetch_array($result)) {
$show = nl2br(substr($row['content'], 0, $length));
}
注:代码标签对我来说是一团糟,$length不在while循环中
使用while()语句通过strpos增加$length是行不通的
有什么建议吗
我想这样做,如果行中有链接,它不会将其切断,直到它转到一个新行,并且它知道它已完成,因此链接将完成。在服务器端执行此操作。我还建议不要选择
ing*
(全部)。始终使用列列表
$result = mysql_query("SELECT SUBSTR(content, 0, 350) AS content FROM `news`");
while($row = mysql_fetch_array($result)) {
$show = nl2br($row['content']);
}
和往常一样,请使用函数
更新
我忘了读整个要求。这应该起作用:
SELECT
CASE
WHEN LOCATE('</a>', content) > 350 THEN SUBSTRING(@str, 1, LOCATE('</a>', content)+4)
ELSE SUBSTRING(content, 1, 350)
END
FROM `news`
选择
案例
当LOCATE(“”,content)>350时,则子字符串(@str,1,LOCATE(“”,content)+4)
ELSE子字符串(内容,1350)
结束
来自`新闻`
我不能给你一个简短的答案,因为这很难。。。
像Symfony这样的框架已经内置了该功能(看看smarty、Symfony等中的truncate
)
但我发现了一个有用的函数示例:写入宽度有限的div框:
<div style="width=100px; display: inline-block;">
使用此CSS:
.wrap-link {
word-wrap: break-word;
}
通过这种方式,任何长度超过其容器宽度的单词(例如长url)都不会根据任意字符限制(无论如何都不一致)截断链接文本或手动换行将被迫自动换行。我的理解是,您希望为文章或类似内容生成摘要。我使用了一个代码< > GeaseTythTease[/Case>函数],它基本上不做一个单词或句子中间的文本和一个“代码”> CutelyStAs/<代码>函数,它试图(并且经常成功)关闭标签(警告:它可能无法正确地关闭表)。目前,我无法提供我使用的代码,但我可以告诉您,它是受这两个实现的启发(并在这两个实现的基础上进行了改进):和。完全不是重点?真正的问题是:“如何在不破坏标记的情况下截断文本”TheHe所说的是我正在寻找的,而我发布的代码不是我正在使用的实际代码,类似,但不相同,我已经有一段时间没有使用mysql了。可能会有用。我必须研究一些,函数看起来和我需要的完全一样,我会阅读它等等,但是会通过一些带有截断函数的框架。我很感激,谢谢。我必须在这里补充(完整),问题是在扫描标签时,开始标签和结束标签的精确匹配。。。这可以通过正则表达式和反向引用来实现,但这会让这个问题变得更糟;)
.wrap-link {
word-wrap: break-word;
}