我使用了一些代码来限制在while循环中显示段落中的字符。
这是我的代码:
//mysqli_stmt_fetch ($stmt);
while (mysqli_stmt_fetch($stmt)) {
$position=70; // Define how many characters you want to display.
// Find what is the last character.
$subject = substr($subjects,$position,1);
if($subject !=" "){
while($subject !=" "){
$i=1;
$position=$position+$i;
$subject = substr($subjects,$position,1);
}
}
$subject = substr($subjects,0,$position);
echo '<h4><span>Subjects / </span>'.$subject.'.....</h4>';
}
我的问题是在运行此脚本时需要很长时间才能运行。如果我对$ position的值进行解析,然后快速执行脚本,如果我增加$ position的值,则需要很长时间才能执行。
如果$position=80
我无法让它工作。实际上它根本没有执行。我的Windows任务管理器显示它使用物理内存100%。
有人可以告诉我这是什么原因吗?
谢谢。
答案 0 :(得分:3)
如果我理解正确,你希望返回前70个字符串的字符串,但在第一个空格字符处将其剪掉。
你可以用这个:
function get_snippet($subject, $count) {
// if string length is already under the desired char count
if (strlen($subject) <= $count) return $subject;
// find first space char after desired position
$pos = strpos($subject, ' ', $count);
if ($pos === false) return $subject; // no space, must be end of the string so return entire text
else return substr($subject, 0, $pos) . '...'; // return all chars up to first space
}
致电:
$newtext = get_snippet($subjects, 70);