2012-03-28 4 views
0

私の目的は85文字以上の文字列を文字列にし、85文字と "..."を続けて表示することです。テキストブロックを文字列にするときに "..."だけを表示しないようにするには

ただし、場合によっては「...」と表示され、テキストがまったく表示されません。これには理由がありますか?つまり、これは特定の文字によって引き起こされますか? ?

if ((strlen($row["description"]) > 85) && (strlen($row["description"]) > 1)) { 
    $whitespaceposition = strpos($row["description"]," ",85); 
    $description_string = substr($row["description"],0,$whitespaceposition)."..."; 
} 
else if ((strlen($row["description"]) < 85) && (strlen($row["description"]) > 1)) { 
    $description_string = $row["description"]; 
} 

はまあ事前に

ジョージ

+6

最後に私は85より大きいものをチェックしなければなりません。なぜなら、最初のif文は第2の条件を必要としないからです。 –

答えて

2

をあなたのすべてをありがとう:;(すなわち "など)

もしそうなら、あなたの指導は非常に

私のコードがあるいただければ幸いです記述の長さが正確に85の場合、おそらく何も表示されません。

それは全体の説明を表示するには、より信頼性の高いことが、それらをトリミングの世話をするためにこれらのCSSルールを使用することがあります。

white-space: nowrap; 
overflow: hidden; 
text-overflow: ellipsis; 

次にブラウザはテキストがトリミングされることを保証の世話をし、あなたのために最後まで...を追加。

+0

+1は第2の代替案として提案するものを正確に入力します:) –

+0

私はそれを達成するためにも領域に幅を設定する必要がありますか? – user946742

0

ここではこれを解決するために私の機能です:

function shortern($str, $int_length = 30) { 

    if (strlen($str) <= $int_length) 
     return $str; 
    else { 

     $str = substr($str, 0, ($int_length - 3)); 

     return preg_replace("/^(.*)[\s\.]+[^\s\.]*$/", "$1...", $str); 

    } 

} 

Basicly(そこハロー)私が最初に完全にフリーワードを見つけ、それにドットを追加するための正規表現を実行し、それはむしろhello...代わりのhello ther...にドットを追加

0

までそこにすべての良い答えの別の代替

$desc = $row["description"]; 
return substr($desc, 0, 85) . (strlen($desc) > 85 ? '...' : ''); 
0
if (strlen($row["description"]) > 85) { 
    $whitespaceposition = strpos($row["description"]," ",85); 
    $description_string = substr($row["description"],0,$whitespaceposition)."..."; 
} 
else { 
    $description_string = $row["description"]; 
} 
関連する問題