If it is, just truncate it at the set limit. In this case, it's imperative to double check the length of the truncated string to check if it is longer than the limit. Some words may be extremely long where a single word may exceed the character limit set. If you're encountering this issue, use mb_strlen() function instead. In addition, together with some non-ASCII characters, these words may take up two bytes of data instead of just one, causing the strlen() function to calculate the length of the string longer than it's (resulting in shorter returned string). Note that if your string contains special characters or foreign languagessuch as Arabic, Chinese, Japanese, Korean, Russian and etc, it may not be possible to use a space character to split words. If code in example 3 does not return desired result, another variant above truncates the string at the nearest word under the maximum string length. $string = substr($string, 0, strpos(substr($string, 0, $length), ' ')) $string = substr($string,0,strpos($string,' ',$length)) Ĭode above will truncate the string at the first space after the desired length, useless for people who wants the string to have at least a minimum amount of characters, but immediately cut off right after the whole word exceeding the limit. Again, the truncate boundary is the end of the last full word right before desired length of return string. Then, strpos() is used to know the exact length of the first line, allowing substr() to cut accurately without breaking apart a word. wordwrap() by default will split at the boundary right before maximum character limit so that the no word is broken apart. PHP code above uses the wordwrap() function to split the texts into multiple lines. $string = substr($string, 0, strpos(wordwrap($string, $length), "\n")) The above code will return a string which is cut off right after the last word before the last space before the maximum character limit is hit. Here are some examples of PHP algorithms that can be used to achieve the effect of not cutting off words into two parts while grabbing a portion of a string. It’s possible to re-code the PHP script to cut off the text at the end of the nearest last word before or after a certain number of characters in full so that it’s a complete word. It may be more comprehensible for visitors to your site to read a complete and full word without been chopped off or broken apart in the middle into two, with the later part absent from the sentences after been cut off due to limited number of characters required. The situation is not an error, but by design, as most commands such as substr() simply return portion of string instructed by start position and length parameters. However, there is possibility that a word can be cut off in the middle of nowhere into two, making the separated word unintelligible. Then share it in comments.PHP has several functions which can truncate a string to grab a portion of the string up to certain number of characters. If you have any better solution to truncate a string without breaking words. If length of given text is shorter then desired length then it returns whole text. It is just using regular expression to match first 50 characters with word boundary. But second code is much shorter then first code. Output of second code is same a first one. quick brown fox jumps over the lazy dog." This code works as expected but I found another shorter solution on stackoverflow Second solution (recommended) $text="quick brown fox jumps over the lazy dog. It returns first 50 characters, if 50th character is between word then its truncate whole word. quickĪs we can see above code works without word break. Return implode(array_slice($parts, 0, $last_part)) $parts = preg_split('/( )/u', $string, null, PREG_SPLIT_DELIM_CAPTURE) First solution $text="quick brown fox jumps over the lazy dog. So I search the web and found many solution on stackoverflow to truncate a string without word break. quick broĪs we can see this code works but its breaking last word. $text="quick brown fox jumps over the lazy dog. Thus I used php substr function to truncate a text to first 50 character. I was working on PHP project that require to get a text from MySQL and display only 50 character.
0 Comments
Leave a Reply. |