Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php <;br/>;_Php_Mysql_Select_While Loop - Fatal编程技术网

Php <;br/>;

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)); } 注:代码标签对我来

在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));
}
注:代码标签对我来说是一团糟,$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;
}