显示字符串最多包含多少个字符而不拆分单词
我目前正在开发一个 php 项目,我需要显示最多 100 个字符的字符串,但不拆分单词。
例如,如果我有字符串
敏捷的棕色狐狸跳过了懒惰的狗回来
假设第 100 个字符处于“跳跃”中间。 目前我正在使用 substr($mystring, 0, 100)
这将打印
快速的棕色狐狸跳跃
,在这种情况下,我想打印
敏捷的棕色狐狸
这可以修复吗
I am currently working on a php project where I need to display a string up to a maximum of 100 characters but without splitting the word.
For example if I have the string
The quick brown fox jumped over the lazy dogs back
Say the 100th character is in the middle of 'jumped'.
At the moment I am using substr($mystring, 0, 100)
This will then print
The quick brown fox jum
Instead in this case I would want to print
The quick brown fox
Is this possible to fix
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
关键是使用 strrpos 在空格处而不是在一个词的中间。
注意:如果这些字符串的源使用多字节字符集,例如 UTF-8,您将需要使用 多字节 等效函数。
The key is using strrpos to cut off at a space rather than the middle of a word.
Note: If the source for these strings uses a multibyte charset, e.g., UTF-8, you will want to use the multibyte equivalent functions.
PHP 的 wordwrap() 函数可以提供帮助。
http://php.net/manual/en/function.wordwrap.php
由于分隔符字符串,它有点老套,但很简洁:
请注意,如果您的原始字符串包含“@@@@@”,这将会中断,我将它用作唯一的分隔符,我认为大多数英语中都不会出现该分隔符字符串。请随意将“@@@@@”更改为更古怪/独特的内容。
PHP's wordwrap() function can help.
http://php.net/manual/en/function.wordwrap.php
It's kinda hacky due to the separator string, but is concise:
Note that this will break if your original string contains '@@@@@', I'm using it as a unique separator that I figure will not be present in most english strings. Feel free to change '@@@@@' to something more wonky/unique.