1

だから私は記事のリストを持っています、そして私は一度に4つの記事を表示し、次に記事の説明を1000文字に短縮してユーザーが「もっと読む」ことができるページを持っています、私の問題は各投稿内にある可能性がありますタグIE:<i>など<b> <img> <center>、テキストを切り捨てるときに、div内または呼び出されたテキスト内に開いているタグがあるかどうかを確認するにはどうすればよいですか?

これが今のところどのように見えるかです

$sum = strip_tags($article, '<a><i><b><u><center><br><img><a><span><iframe>');
    if (strlen($sum) > 1000) {
        $sumCut = substr($sum, 0, 1000);
        $sum = substr($sumCut, 0, strrpos($sumCut, ' ')).'... <div class="right"><a href="article-' .$record[nid]. '">Read More</a></div>'; 
}

 echo $sum;

例えば

私が持っている場合...

風変わりなimperdietimperdietフリンギラ。Quisque sit ametnibhodio。Fusce sit amet massa vitae mifaucibusviverra。

次のようなコード<i>Quisque imperdiet imperdiet fringilla. Quisque sit amet nibh odio. Fusce sit amet massa vitae mi faucibus viverra.</i>

ただし、切り捨て番号を10に設定すると、そのタグは開いたままになるため、後の単語はすべてイタリック体になります。

4

2 に答える 2

2

とてもダイナミックに近づきましたが、使用することstrpos()が重要でした。これをコードに追加し、if ((strpos($sum, '<i>')) && (!strpos($sum, '</i>'))) { echo "</i>"; }許可するタグごとに同様のものを追加しました。次に行うことは、最後の近くに画像やiframeがないことを確認する方法を理解することです。投稿の中で、これを編集してそれをどのように行ったかを説明しますが、今のところここに私のコードがあります...

$sum = strip_tags($article, '<a><i><b><u><center><br><img><a><span><iframe>');
if (strlen($sum) > 1000) {
    $sumCut = substr($sum, 0, 1000);
    $sum = substr($sumCut, 0, strrpos($sumCut, ' '));
    $cut = 1; 
}else{
    $cut = 0; }

echo $sum;
if ((strpos($sum, '<i>')) && (!strpos($sum, '</i>'))) { echo "</i>"; }

if ($cut==1) { echo '... <div class="right"><a href="article-' .$record[nid]. '">Read More</a></div>'; }

編集:

さて、投稿の最後に画像がないことを確認するよりも良い解決策を見つけoverflow: hidden;ました。画像のサイズを変更するdivを作成しただけです。

編集:

<br>タグの真ん中を壊す問題もありまし<brた。一時的な修正が残っていたので、すべての後に別のコードを追加するようです<br>。これらの場合、悪いコード<br<br>が残りますが、少なくともすべてが機能し、表示されませんが、誰かがより実行可能な解決策私に知らせてください

これがお役に立てば幸いです

于 2012-06-08T19:53:43.640 に答える
1

を使用しstrpos()て、最初のX文字内の開いているタグを検索します(Xは切り捨て番号です)。次に、trueの場合、文字列に追加します。

基本的に、(擬似コード)

if(first10chars.contains[use strpos here] "<i>" and !.contains "</i>") {
$endstr .= "</i>";
}

他の人にも同じことをします。かなり悪い方法ですが、うまくいくでしょう

于 2012-06-08T19:25:06.407 に答える