0

以下是我在内部网络服务器上运行的 HTML 代码。我无法弄清楚如何让 PHP 截断从数据库返回的文本以正常工作:

编辑:这就是我所看到的(需要 25 个字符,然后是省略号)

在此处输入图像描述

<html>
<head><title>My Title</title>

<?php
    function truncate($text, $chars = 25) 
    {
        $text = $text." ";
        $text = substr($text,0,$chars);
        $text = substr($text,0,strrpos($text,' '));
        $text = $text."...";
        return $text;
    }
?>
        
</head>
<body>
<div id="mydiv">
    <table class="myTable">
        <tr>
            <td>Col 1</td>
        </tr>
        <?php
        $counter = 0;
        while ($counter < $numRows)
        {
            $f3=mysql_result($result,$counter,"url");
        ?>
        <tr>
            <td>
                <div class="masker">
                    <a href="<?php echo $f3; ?>" target="_blank"><?php echo truncate($f3); ?></a>
                </div>
            </td>
        </tr>
        <?php
            counter++;
        ?>
    </table>
</div>
</body>
</html>

有任何想法吗?谢谢。

4

3 回答 3

3

echo truncate(echo $f3);应该echo truncate($f3);

于 2013-06-15T01:00:47.387 回答
1

与其截断字符串,不如试试 CSS:

.someClass {
    display:inline-block;
    max-width:150px;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
}

HTML:

<a href="..." target="_blank" class="someClass"><?=$f3?></a>

话虽这么说,如果你$f3是一个 URL,它不应该有任何空格,所以你不应该用你的函数来修剪它......

于 2013-06-15T01:05:33.940 回答
0
function shorter($input, $length)
{
    //no need to trim, already shorter than trim length
    if (strlen($input) <= $length) {
        return $input;
    }

    //find last space within length
    $last_space = strrpos(substr($input, 0, $length), ' ');
    if(!$last_space) $last_space = $length;
    $trimmed_text = substr($input, 0, $last_space);

    //add ellipses (...)
    $trimmed_text .= '...';

    return $trimmed_text;
}
?>
于 2013-06-15T01:34:23.550 回答