我知道如何使用substr函数,但是这将很快结束一个单词的中间字符串.我希望字符串在一个单词的结尾处结束我将如何进行此操作?它会涉及正则表达吗?任何帮助非常感谢.
这就是我到目前为止所拥有的.只是SubStr ......
echo substr("$body",0,260);
Run Code Online (Sandbox Code Playgroud)
干杯
是否可以在多个字符后将Java字符串截断为最接近的字边界.类似于PHP wordwrap()函数,如本例所示.
当我使用时substr($string,0,100),它会给出前100个字符.有时它留下了最后一个字不完整.这看起来很奇怪.我可以用字而不是字符来限制吗?
我的变量$content包含我的文字.我想创建一个摘录$content并显示第一个句子,如果句子短于15个字符,我想显示第二个句子.
我已经尝试从文件中删除前50个字符,它的工作原理如下:
<?php echo substr($content, 0, 50); ?>
Run Code Online (Sandbox Code Playgroud)
但我对结果不满意(我不希望任何词语被削减).
是否有PHP函数获取整个单词/句子,而不仅仅是substr?
非常感谢!
如何在不切换单词的情况下将字符串缩短为最多140个字符.
请使用以下字符串:
$string = "This is an example string that contains more than 140 characters. If I use PHPs substring function it will split it in the middle of this word."
使用substr($string, 0, 140)我们会得到这样的东西:
This is an example string that contains more than 140 characters. If I use PHPs substring function it will split it in the middle of this wo
注意它通过单词"word"切成薄片.
我需要的是能够缩短一个字符串,同时保留整个单词但不超过140个字符.
我确实找到了以下代码,但即使它会保留整个单词,也不能保证整个字符串不超过140个字符限制:
function truncate($text, $length) {
$length = abs((int)$length);
if(strlen($text) > $length) {
$text …Run Code Online (Sandbox Code Playgroud) 想象一下,我有150个字符长的字符串.我想将它分成3个部分,每个部分最多50个字符.诀窍是我还必须保持单词完整,同时将字符串分成3部分.
我可以使用substr并检查它是否将单词切成两半.我想知道是否还有其他优雅的方法来做到这一点.
我还必须记住,字符串可能少于150个字符.例如,如果长度为140个字符,则应为50 + 50 + 40.
如果它小于100应该是50 + 50.如果它是50个字符或更少它不应该分割字符串.
我很高兴听到您的想法/方法来解决这个问题.
提前感谢您的时间和关注.
我想显示一个带有有限数量单词的小介绍,如果最后一个单词太长,则不剪切它...我知道有一个 php 函数 substr() 但它不会显示像“这是我的开始”这样的介绍text...”,它在 PHP 中表示“这是我的起始...”。感谢您的任何答复。
<a href="#">'.substr($rows['title'],0,50).'</a>
Run Code Online (Sandbox Code Playgroud) 可能重复:
从数组中提取固定数量的字符,仅完整单词
当它们的长度超过20个字符时,我需要截断字符串。言语必须始终保持在一起,这样:
跟我的小朋友打个招呼。
变成这个:
跟我打个招呼...
代替这个:
跟我打个招呼...
我基于一个非常老的线程中的注释设置了此功能。这个正则表达式的问题是它删除了句子的最后一个单词(当有两个或更多单词时)。
function gen_string($string,$min=20) {
$new = preg_replace('/\s+?(\S+)?$/','',substr($string,0,$min));
if(strlen($new) < strlen($string)) $new .= '…';
return $new;
}
Run Code Online (Sandbox Code Playgroud)
有人可以帮我处理正则表达式吗?谢谢!
解决方案通过麦金太尔(少数润饰)
function gen_string($string,$max=20) {
$tok = strtok($string,' ');
$sub = '';
while($tok !== false && mb_strlen($sub) < $max) {
if(strlen($sub) + mb_strlen($tok) <= $max) {
$sub .= $tok.' ';
} else {
break;
}
$tok = strtok(' ');
}
$sub = trim($sub);
if(mb_strlen($sub) < mb_strlen($string)) $sub .= '…';
return $sub; …Run Code Online (Sandbox Code Playgroud) 我在数据库中有一个段落
$ str ="这是我很快就会展示的一段,当我点击视图时,它会完全显示我正在使用ajax并检索它"
我表现得像
这是我很快就会展示的一段
php for show第一个单词是
function chop_string($str, $x)// i called the function
{
$string = strip_tags(stripslashes($string));
return substr($string, 0, strpos(wordwrap($string, $x), "\n"));
}
Run Code Online (Sandbox Code Playgroud)
当用户点击view more它时会显示其余部分,但问题是如何跳过这个this is a paragraph i show shortly 并显示其余部分
我想$x在点击后显示段落view more
我使用PHP返回用户的浏览器用户代理问题是我想要打印的地方:我不希望长度超过每行大约30个字符.有没有办法将返回的变量(从我调用的函数中获取字符串)分解为一定长度的子字符串?由于UA字符串的长度不同,我不确定会发生什么.
这是我返回用户代理的PHP代码:
function __toString() {
return "Browser Name:
return "Browser Name: {$this->getBrowser()} \n" .
" Browser Version: {$this->getVersion()} \n" .
" Browser User Agent String: {$this->getUserAgent()} \n" .
" Platform: {$this->getPlatform()} ";
}
Run Code Online (Sandbox Code Playgroud)
特别是这个电话$this->getUserAgent.我用这个输出:
<?php require_once('browser.php'); $browser = new Browser(); echo $browser . "\n"; ?>
Run Code Online (Sandbox Code Playgroud)
现在,名称,版本和平台调用输出就像我想要的那样(因为在UA字符串中没有任何地方接近它们).
简而言之,如何拆分返回的用户字符串,使其每行不超过一定数量的字符?理想情况下,我想将它们存储到临时变量中,因为我必须在单词之间添加空格.例如,在它显示"平台"的地方,它前面有空格,因此它与浏览器版本垂直排列,然后是空格,以便从函数中返回的所有字符串的结果排成一行.
如果有人想在Github的代码上面看到我在做什么,函数调用在此上线339-243,并且呼应结果去这个上线152.
这就是我现在所拥有的:
$text1 = $this->getUserAgent();
$UAline1 = substr($text1, 0, 26);
$text2 = $this->getUserAgent();
$towrapUA = str_replace($UAline1, '', $text2);
$wordwrapped = chunk_split($towrapUA, 26, "\n\r");
Run Code Online (Sandbox Code Playgroud)
在这一点上唯一的问题是如何在每个包装代码之前获得恒定数量的空格?我需要(比方说)在所有包装线之前的20个空格进行格式化.