我只想要' $ output'的前50个字符。已上传到数据库以显示在我的页面上,这对我来说最简单的方法是什么?如果$ output包含超过50个字符,我希望文本以最后一个单词结束而不超过50个字符然后放入" ..."有点像“阅读更多”'部分会。
PHP:
<?php
require_once("nbbc/nbbc.php");
$bbcode = new BBCode;
$sql = "SELECT * FROM posts ORDER BY id DESC";
$res = mysqli_query($dbCon, $sql) or die(mysqli_error($dbCon));
$posts = "";
if(mysqli_num_rows($res) > 0) {
while($row = mysqli_fetch_assoc($res)) {
$id = $row['id'];
$title = $row['title'];
$subtitle = $row['subtitle'];
$content = $row['content'];
$date = $row['date'];
$output = $bbcode->Parse($content);
$posts .= "<div id='post'><h2><a href='view_post.php?pid=$id' target='_blank'>$title</a></h2><h3 id='subtitle'>$subtitle</h3><h3 id='datethingy'><span style='color: #457F2C;'>Last updated:</span> $date</h3><p>$output</p></div>";
}
echo $posts;
}else {
echo "There are no posts to be displayed.";
}
?>
答案 0 :(得分:1)
您可以这样做:
$str50 = substr($mystring, 0, 50);
答案 1 :(得分:1)
如果你的'&#39; $输出&#39;将像你说的那样显示在文本域中,最简单的方法是:
<input type="text" maxlength="50">
答案 2 :(得分:0)
这是切割后漂亮点的最简单方法:
echo (strlen($var) > $length ? substr($var, 0, $length).'...' : $var);
答案 3 :(得分:0)
如果您不想剪切单词,最好的解决方案是使用wordwrap函数,如下所示:
function tokenTruncate($string, $your_desired_width) {
$parts = preg_split('/([\s\n\r]+)/', $string, null, PREG_SPLIT_DELIM_CAPTURE);
$parts_count = count($parts);
$length = 0;
$last_part = 0;
for (; $last_part < $parts_count; ++$last_part) {
$length += strlen($parts[$last_part]);
if ($length > $your_desired_width) { break; }
}
return implode(array_slice($parts, 0, $last_part));
}
这会将文本分成不超过60个字符的行,然后选择第一行。
表示文本短于60个字符,或者在该限制之前有换行符的场景。