我已经编写了 PHP 代码来获取给定动态句子的某些部分,例如
this is a test sentence
:
substr($sentence,0,12);
我得到输出:
this is a te
但我需要它作为一个完整的单词停止,而不是拆分一个单词:
this is a
记住
$sentence
不是固定字符串(可以是任何字符串),我该怎么做?
使用自动换行
如果您使用的是 PHP4,则只需使用
split
:
$resultArray = split($sentence, " ");
数组的每个元素都是一个单词。不过要小心标点符号。
explode
将是 PHP5 中推荐的方法:
$resultArray = explode(" ", $sentence);
首先。在太空中使用爆炸。然后,计算每个部分+总的组装字符串,如果没有超出限制,则将其用空格连接到字符串上。
尝试使用 explode() 函数。
您的情况:
$expl = explode(" ",$sentence);
您将得到一个数组中的句子。第一个单词是 $expl[0],第二个单词是 $expl[1],依此类推。要将其打印在屏幕上,请使用:
$n = 10 //words to print
for ($i=0;$i<=$n;$i++) {
print $expl[$i]." ";
}
创建一个可以随时重复使用的函数。如果给定字符串的长度大于您要修剪的字符数,这将查找最后一个空格。
function niceTrim($str, $trimLen) {
$strLen = strlen($str);
if ($strLen > $trimLen) {
$trimStr = substr($str, 0, $trimLen);
return substr($trimStr, 0, strrpos($trimStr, ' '));
}
return $str;
}
$sentence = "this is a test sentence";
echo niceTrim($sentence, 12);
这将打印
this is a
按要求。
希望这是您正在寻找的解决方案!
这只是伪代码而不是 php,
char[] sentence="your_sentence";
string new_constructed_sentence="";
string word="";
for(i=0;i<your_limit;i++){
character=sentence[i];
if(character==' ') {new_constructed_sentence+=word;word="";continue}
word+=character;
}
new_constructed_sentence 就是你想要的!!!
您的“句子”不包含任何标点符号,因此我假设所需的截断应该出现在空格之前。
使用简单的正则表达式模式贪婪地匹配从字符串开头算起的 0 到 N 个字节,然后匹配一个空格,然后用
\K
忘记匹配的字符,然后匹配句子的其余部分。 用空字符串替换该匹配项。
代码:(演示)
$text = 'this is a test sentence';
$max = 12;
var_export(
preg_replace(
"/.{0,$max}\K .*/",
'',
$text
)
);
// 'this is a'