0

这里我有一个字符串:“status; status;” 等等...我需要从字符串长度超过 100 个字符的状态中删除字符串

例如:“状态;状态;状态;(这里超过 100 个字符)...”

以前我用数组做过:

 if($length_of_string > 100)
 { 
     $number_of_elements = count($statuses_array);
     echo $statuses_array[$number_of_elements-1];
     echo ' ... ';
     } else {
     echo $string_of_statuses;
}

但这不好

先感谢您!

4

3 回答 3

2

怎么样:

$l = strlen($status_string);
if ($l > 100) {
   //Split string into array of statuses, to not break last status
   $ls = explode(";",$status_string);
   $new_status = "";
   $i = 0;
   //Check if there is room for the next status in $new_status without passing 100 chars
   while (strlen($new_status) < 100) {
      $new_status .= $ls[$i].";";
      $i++;
   }
   $new_status = substr($new_status,0,-1)."...";
}

编辑:简化代码,因为最后一个状态显然可以超过 100 个字符,这实际上使它更容易

于 2013-07-25T09:29:04.163 回答
0

你的变量
$variable_text="status; status; status; status; status; status; status; status; status; status; status; status; statwus; status; status; status; status; status;";

要添加“...”后的数字
$characters=100;

计算$variable_text中的单词
$words_number=preg_split("/[\s]+/", $variable_text);


将单词添加到变量$words。如果变量$words中的字符小于变量$characters(100) ,则将一个单词添加到变量$result中。如果第 100 个字符在单词“sta(100)tus;”中 这个词没有添加到变量$result

for($i=0;$i<=count($words_number);$i++){
    $words=$words." ".$words_number[$i];
    if(strlen($words)<$characters){
        $result=$words;
    }
}

如果您的变量$variable_text大于变量$result添加“...”在最后

if(strlen($result)<strlen($variable_text)){
    $result=$result." ...";
}

显示结果
echo $result;

于 2013-07-25T10:08:20.180 回答
0

如果我正确地阅读了您的问题,并且我认为我是:如果字符串长度超过 100 个字符,请在前 100 个字符后附加省略号。

如果是这样,那么您不一定需要 aregex或 a preg_replace。您可以简单地按以下方式进行:

$status_length = strlen($status_string);

$status = '';

if ($status_length > 100) {
   //get the substring up to the first 100 characters:
   $status = substr($status_string, 0, 100);

   //now append the ellipsis to it:
   $status .= '...';
}

echo $status;
于 2013-07-25T09:20:41.957 回答