In php, how does one limit the number of words in the output article and use "." to represent the remaining words? Ladies and gentlemen, when I was learning php,
Because the content of the article is too large, the entire table is distorted, so I want to output only a part of the content, and the other content is represented by a ellipsis,
I also found a lot of methods on the Internet that won't work. CSS, substr and other functions in php do not work well. I hope I can get help! Thank you.
Reply to discussion (solution)
echo mb_strlen($news['n_content'], 'utf-8') > 9 ? mb_substr($news['n_content'], 0, 9, 'utf-8').'....' : $news['n_content'];
Upstairs, make sure that the landlord opens extension = php_mbstring.dll;
/*** String truncation **/function sub_str ($ str, $ length = 0, $ append = true) {$ str = trim ($ str ); $ strlength = strlen ($ str); if ($ length = 0 | $ length >=$ strlength) {return $ str; // if the truncation length is equal to 0 or greater than or equal to the length of this string, the return string itself} elseif ($ length <0) // if the truncation length is negative {$ length = $ strlength + $ length; // The truncation length is equal to the string length minus the truncation length if ($ length <0) {$ length = $ strlength; // if the absolute value of the truncated length is greater than the length of the string itself, the length of the truncated length is obtained.} if (function_exists ('MB _ su Bstr ') {$ newstr = mb_substr ($ str, 0, $ length, EC_CHARSET);} elseif (function_exists ('iconv _ substr ')) {$ newstr = iconv_substr ($ str, 0, $ length, EC_CHARSET);} else {// $ newstr = trim_right (substr ($ str, 0, $ length )); $ newstr = substr ($ str, 0, $ length);} if ($ append & $ str! = $ Newstr) {$ newstr. = '...';} return $ newstr ;}
Mb_strlen
Many open-source websites have such functions.
Mb_strlen
The following is an example of the thinkphp framework source code;
/*** String truncation, supports Chinese and other encodings * @ static * @ access public * @ param string $ str string to be converted * @ param string $ start position * @ param string $ length truncation length *@ param string $ charset encoding format * @ param string $ suffix truncated display character * @ return string */static public function msubstr ($ str, $ start = 0, $ length, $ charset = "UTF-8", $ suffix = true) {if (function_exists ("mb_substr") $ slice = mb_substr ($ str, $ start, $ length, $ charset); elseif (f Unction_exists ('iconv _ substr') {$ slice = iconv_substr ($ str, $ start, $ length, $ charset );} else {$ re ['utf-8'] = "/[\ x01-\ x7f] | [\ xc2-\ xdf] [\ x80-\ xbf] | [\ xe0 -\ xef] [\ x80-\ xbf] {2} | [\ xf0-\ xff] [\ x80-\ xbf] {3 }/"; $ re ['gb2312'] = "/[\ x01-\ x7f] | [\ xb0-\ xf7] [\ xa0-\ xfe]/"; $ re ['gbk'] = "/[\ x01-\ x7f] | [\ x81-\ xfe] [\ x40-\ xfe]/"; $ re ['big5'] = "/[\ x01-\ x7f] | [\ x81-\ xfe] ([\ x40-\ x7e] | \ xa1-\ xfe]) /"; preg_match_all ($ re [$ cha Rset], $ str, $ match); $ slice = join ("", array_slice ($ match [0], $ start, $ length ));} return ($ suffix & (mb_strlen ($ str, $ charset)> $ length ))? $ Slice. '...': $ slice ;}
This can be done with css, and Baidu css can be used to control the number of words
Thank you for your advice on the first floor. The problem has been solved!
I would also like to thank my brother on the second floor for reminding me to enable "extension = php_mbstring.dll" in php. ini when I use my brother on the first floor ",