有没有办法在PHP中修剪文本字符串,因此它有一定数量的字符?例如,如果我有字符串:
$string = "this is a string";
我怎么能修剪它说:
$newstring = "this is";
这是我到目前为止所使用的chunk_split()
,但它不起作用。任何人都可以改进我的方法吗?
function trimtext($text)
{
$newtext = chunk_split($text,15);
return $newtext;
}
我也看了this个问题,但我真的不明白。
答案 0 :(得分:5)
if (strlen($yourString) > 15) // if you want...
{
$maxLength = 14;
$yourString = substr($yourString, 0, $maxLength);
}
将完成这项工作。
看看here。
答案 1 :(得分:4)
function trimtext($text, $start, $len)
{
return substr($text, $start, $len);
}
你可以这样调用这个函数:
$string = trimtext("this is a string", 0, 10);
会回来:
This is a
答案 2 :(得分:3)
substr
让你拍摄一部分由你需要的字符组成的字符串。
答案 3 :(得分:3)
您可以使用此
substr()
获取子串的函数
答案 4 :(得分:3)
你没有说出这个的原因,但想想你想要实现的目标。这是一个逐字缩短字符串的函数,最后添加或不添加省略号:
function limitStrlen($input, $length, $ellipses = true, $strip_html = true) {
//strip tags, if desired
if ($strip_html) {
$input = strip_tags($input);
}
//no need to trim, already shorter than trim length
if (strlen($input) <= $length) {
return $input;
}
//find last space within length
$last_space = strrpos(substr($input, 0, $length), ' ');
if($last_space !== false) {
$trimmed_text = substr($input, 0, $last_space);
} else {
$trimmed_text = substr($input, 0, $length);
}
//add ellipses (...)
if ($ellipses) {
$trimmed_text .= '...';
}
return $trimmed_text;
}
答案 5 :(得分:3)
substr削减半个字。如果word包含UTF8字符,那就非常糟糕。所以最好使用mb_substr:
$string = mb_substr('word word word word', 0, 10, 'utf8').'...';
答案 6 :(得分:2)
如果你想获得一个包含一定数量字符的字符串,你可以使用substr,即
$newtext = substr($string,0,$length);
其中$ length是新字符串的给定长度。
答案 7 :(得分:0)
如果你想要前10个单词的摘要(你可以在$ text中使用html,在脚本之前有strip_tags) 使用此代码:
preg_match('/^([^.!?\s]*[\.!?\s]+){0,10}/', strip_tags($text), $abstract);
echo $abstract[0];
答案 8 :(得分:0)
我的功能有一些长度,但我喜欢使用它。我将字符串int转换为数组。
function truncate($text, $limit){
//Set Up
$array = [];
$count = -1;
//Turning String into an Array
$split_text = explode(" ", $text);
//Loop for the length of words you want
while($count < $limit - 1){
$count++;
$array[] = $split_text[$count];
}
//Converting Array back into a String
$text = implode(" ", $array);
return $text." ...";
}
或者,如果文本来自编辑器,并且您想要删除HTML标记。
function truncate($text, $limit){
//Set Up
$array = [];
$count = -1;
$text = filter_var($text, FILTER_SANITIZE_STRING);
//Turning String into an Array
$split_text = preg_split('/\s+/', $text);
//Loop for the length of words you want
while($count < $limit){
$count++;
$array[] = $split_text[$count];
}
//Converting Array back into a String
$text = implode(" ", $array);
return $text." ...";
}