2016-04-26 81 views
0

我想正確理解PHP strlen()使其中的文本被縮短一個應用程序,並用...我誤解strlen()?

完成我的代碼:

$prize_text = "Learn how to eat pizza TODAY"; 
      if (strlen($prize_text) > 24) { 
     $prize_text = substr($prize_text, 0, 21) . '...'; 
     } 

#1 Visual Aid

$prize_text = "Watch Good Day Sunshine Today!"; 

#2 Visual Aid

$prize_text = "abcdefghijklmnopqrstuvwxyz"; 

#3 Visual Aid

爲什麼一切都不匹配?我想要一個統一的標準縮短文本,然後追加三個點。我的代碼有什麼問題?

+0

出錯了?你切斷了弦,並保留第21個第一個字符?不確定要理解你的問題,你對3個例子有什麼期望? – olibiaz

+4

您可能正在使用不具有固定字符寬度的字體,因此您將獲得不同的線條長度。 – Rasclatt

+0

@Rasclatt我沒跟着你。你能否詳細說明一下?我使用Open Sans和18px字體大小... –

回答

7

錯誤的工具。你需要CSS來避免你遇到的突發問題。

#element { 
    overflow: hidden; 
    white-space: nowrap; 
    text-overflow: ellipsis; 
} 

優勢

  • 您可以隱藏/顯示隨意的文字,而用PHP發送文本文檔中已經呈現。
  • 適用於多種情況,而PHP是硬編碼的。
+0

感謝您的回答。我現在覺得很愚蠢...... –

0

strlen()計算字符串中的字符數,而不是由視口上的字符串佔用的空間。您可以通過將所有字符設置爲相同長度(無論是小寫還是大寫)來製作相同的長度,以使所有具有相同寬度的字符串可以參考http://www.ampsoft.net/webdesign-l/WindowsMacFonts.html