2012-03-28 2 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보다 큰 것을 검사해야합니다. 반드시 1보다 커야합니다. 따라서 첫 번째 if 문에 두 번째 조건이 필요하지 않습니다. –

답변

2

을 여러분 모두 감사합니다 설명의 길이가 정확히 85이면 아무 것도 표시하지 않습니다.

전체 설명을 보여 더 신뢰할 수 있지만 트리밍 돌봐이 CSS 규칙을 사용할 수 있습니다 : 그런 다음 브라우저가 텍스트를 보장 돌봐

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

가 트리밍을하고 당신을 위해 끝까지 ... 추가 .

+0

+1 정확히 두 번째 대안으로 제안 할 내용을 입력하십시오. –

+0

답변 해 주셔서 감사합니다 :) 내가 그것을 달성하기 위해 영역에 너비를 asign해야합니까? – 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"]; 
} 
관련 문제