2010-12-14 23 views
1

タイトルを8文字以上に短縮する方法を学習しようとしています。それが8文字より長い場合は、最初の8文字をエコーし​​、その後に楕円を置きます。ここでWordpress/PHP:タイトル文字が8文字以上の場合はタイトルを短くしてください。

は私がタイトルを取得しています方法です:

<?php echo $post->post_title ?>

任意の助けいただければ幸いです。これは私にとって素晴らしい学習のレッスンになるので、これを将来的に再現できるので、やはりどんな助けも素晴らしいだろう。

答えて

5
<?php 

    if (strlen($post->post_title) > 8) 
     echo substr($post->post_title, 0, 8) . ' ...'; 
    else 
     echo $post->post_title; 

?> 

あなたはmbstring拡張が有効になっているしている場合あるいは、Gordon'sanswerにより示唆されるように短い方法もあります。投稿のエンコーディングがマルチバイトの場合は、とにかくmbstringを使用する必要があります。それ以外の場合は、文字が正しくカウントされません。

echo mb_strimwidth($post->title, 0, 8, ' ...'); 
+0

これはとても美しくてエレガントです。 ty so much <3 – HollerTrain

+0

@HollerTrain:当初、 'substr()'の引数の順序は私の答えでは正しくありませんでした。今修正されました。 – Saul

+0

に 'mb_strimwidth'を使用すると、これらのようなマルチバイト文字に対して正しい結果が得られるという利点があります。また、私は3つのドット '...'の代わりに実際の省略記号 '... 'を使っています。 – Gordon

0

mb_strimwidth

echo mb_strimwidth('Your Title', 0, 8, '…'); 

を使用することができますが、プラグインでこれを行う必要がありますので、あなたがテーマを変更した場合、変更は紛失することがあります

+0

は非常に多くのレベルで間違っています。 – HollerTrain

0

これを試すことができます。今ではそう

$maxlength = 8; 
if (strlen($post->post_title) > $maxlength) 
     echo substr($post->post_title, 0, $maxlength) . ' ...'; 
    else 
     echo $post->post_title; 

あなたのコードのすべての行の最大文字を変更する必要はありません。

ありがとうございました。

関連する問題