2016-04-26 43 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