0

結果の一部としてHTMLタグを含む/含まない、および/または単語全体などを保持しながら切り捨てるなど、HTML文字列を特定の長さに切り詰めるさまざまな方法を認識しています。–ただし、私の問題は、文字列にまたはなどの特殊文字が含まれている場合です&

文字列を 100 文字に切り詰める必要があります (または、特殊文字の途中で切り捨てられてしまう場合は、それよりも少し短くする必要があります)。今私は機能を持っています:

$result= truncateIfNecessary(strip_tags($fullText), 100); //ignore HTML tags 

function truncateIfNecessary($string, $length) {
    if(strlen($string) > $length) {
        return substr($string, 0, $length).'...';
    } else {
        return $string;
    }
}

しかし、文字列がtext text – text(ページに次のように表示され、text text - text$length分類される場合、 を–返すtext text &nda...必要があるときに、そのように表示されるものを返しtext text...ます。

編集:

(回答として投稿)

4

4 に答える 4

0

wordwrap php 関数を使用します。

このようなもの:

$result = wordwrap(strip_tags($fullText), 100, "...\n"); // Remove HTML and split
$result = explode("\n", $result);
$result = $result[0]; // Select the first group of 100 characters
于 2013-09-16T18:47:41.093 に答える
0
function _truncate($string,$lenMax = 100) {

    $len = strlen($string);
    if ($len > $lenMax - 1) {
        $string = substr(strip_tags($string),0,$lenMax);
        $string = substr($string,0,strrpos($string," ")).'...';
    }

    return $string;
}
于 2016-01-08T16:02:45.943 に答える
0

私は試した

function truncateIfNecessary($string, $length) {
    if(strlen($string) > $length) {
        $string = html_entity_decode(strip_tags($string));
        $string = substr($string, 0, $length).'...';
        $string = htmlentities($string);
        return $string;
    } else {
        return strip_tags($string);
    }
}

しかし、何らかの理由でいくつかの と を見逃していまし–•。今のところ、http://alanwhipple.com/2011/05/25/php-truncate-string-preserving-html-tags-words/で解決策を見つけました(内部のリンクを切断せずにツイートのようにテキストを短縮するにリンクされています) は機能しました完全に - htmltag を処理し、単語全体を保持する (または保持しない)、および htmlentities。今では次のとおりです。

function truncateIfNecessary($string, $length) {
    if(strlen($string) > $length) {
        return truncateHtml($string, $length, "...", true, true);
    } else {
        return strip_tags($string);
    }
}
于 2013-09-16T18:47:59.430 に答える