0

我正在从 mysql 数据库中提取一些数据并用它构建一个表。我有一个截断函数来砍掉很长的字符串。

这是截断函数:

    function myTruncate($string, $limit, $break=".", $pad="...")
    {
      // return with no change if string is shorter than $limit
      if(strlen($string) <= $limit) return $string;

      // is $break present between $limit and the end of the string?
      if(false !== ($breakpoint = strpos($string, $break, $limit))) {
        if($breakpoint < strlen($string) - 1) {
          $string = substr($string, 0, $breakpoint) . $pad;
        }
      }
      return $string;
    }

这是调用该函数的表格构建位:

    while($row = mysql_fetch_assoc($liveItemQuery)){
       //get donation type
       $content .= "<tr><td>" . $i . "</td><td>" . $row['timestamp'] . "</td><td>" . myTruncate($row['description'], 25) . "</td><td>" . $row['po_number'] . "</td><td>" . number_format($row['amount'], 2) . "</td><td><a href=\"?view=expenses&itemid=" . $row['id'] . "\">Edit</a></td></tr>";
       $i++;
   }

话虽如此,没有在描述字段上执行截断。可能值得注意的是,description它作为数据类型存储text在数据库中。此外,myTruncate($row['description'], 25)报告的 var 转储string(1995),文本的全长。

那么发生了什么?

预先感谢您的任何帮助。

4

1 回答 1

0

“无论如何都要截断”。容易得多。

function myTruncate($s, $len){
    return substr($s, 0, $len) . (strlen($s)>$len? '...':'');
}
于 2013-01-10T18:54:44.030 回答