3

PHPでは、行のコンテンツを最大文字数制限で表示しようとしているので、

$result = mysql_query("SELECT * FROM `news`");

$length = 350; // Show first 350 characters of row, then cut it off

while($row = mysql_fetch_array($result)) {
$show = nl2br(substr($row['content'], 0, $length));
}

PS: コード タグがめちゃくちゃです。$length が while ループにありません。

strpos で $length を増やすために while() ステートメントを使用しても機能しません。

助言がありますか?

行にリンクが含まれている場合、新しい行に移動するまで切断されず、終了したことがわかるので、リンクが完了します。

4

6 に答える 6

2

難しいので、私はあなたにその問題への簡単な答えを与えることはできません... Symfonyのようなフレームワークにはすでにその機能が組み込まれています(truncatesmarty、symfonyなどを見てください.)

しかし、便利な関数の例を見つけました: HERE -- truncate($text, $length = 100, $ending = '...', $exact = false, $considerHtml = true)

于 2012-08-31T23:15:53.173 に答える
0

このCSSを使用します。

.wrap-link {
  word-wrap: break-word;
}

このように、リンクテキストを切り取ったり、任意の文字制限に基づいて手動で行を折り返したりする代わりに(とにかく一貫性がない)、コンテナの幅より長い単語(長いURLなど)は強制的に折り返されます自動的。

于 2012-08-31T23:39:19.907 に答える
0

幅が制限された div ボックスに書き込みます。

<div style="width=100px; display: inline-block;">
于 2012-08-31T23:20:05.370 に答える
0

私の理解では、記事のティーザーまたは類似のものを生成したいということです。generate_teaser基本的substrに単語や文の途中でテキストをカットせずに実行する関数と、タグを閉じようとする (多くの場合成功する) 関数を組み合わせて使用​​しclose_tagsます (警告: テーブルを正しく閉じられない可能性があります)。 . 現在、私が使用しているコードを提供することはできませんが、次の 2 つの実装に触発された (および改善された) ことは言えます:node_teaserclosetags.

于 2012-08-31T23:44:06.793 に答える
0
$show = nl2br(substr(trim(strip_tags($row['content'])), 0, $length));
于 2012-08-31T23:34:17.373 に答える
0

サーバー側で行います。SELECTまた、 ing *(all)に反対することをお勧めします。常に列リストを使用してください。

$result = mysql_query("SELECT SUBSTR(content, 0, 350) AS content FROM `news`");

while($row = mysql_fetch_array($result)) {

    $show = nl2br($row['content']);
}

そしていつものように、関数の使用を停止して mysql_ください。

アップデート

要件全体を読むのを怠りました。これはうまくいくはずです:

SELECT
    CASE
        WHEN LOCATE('</a>', content) > 350 THEN SUBSTRING(@str, 1, LOCATE('</a>', content)+4)
        ELSE SUBSTRING(content, 1, 350)
    END
FROM `news`
于 2012-08-31T23:12:13.350 に答える