完全停止后的断线时,接近800的话

时间:2017-06-06 05:36:51

标签: php

我有一个很长的描述,当字数大于800时,我想在每次完整停止后打破字符串。

类似于计数800个字符然后识别下一个出现的'。',断开该行寻找下一个800字然后一个句号,然后再次断开该行。

function TrimString($String, $Length){
    if(strlen($String)<=$Length){
        $stringValue=$String;
    } else {
        $new_l = strpos ($String , ".", $Length);
        $Length = $new_l+1;
        $stringValue=substr($String,0,$Length);
    }
    return $stringValue;
}

我尝试使用此功能但未按预期工作。

$m=800;
echo TrimString(stripslashes($content),$m);

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

我理解你的问题如下:
在每800个符号后搜索第一个w = Window().partitionBy("dis_price_released").rowsBetween(-sys.maxsize, sys.maxsize) df2 = result.withColumn("mean", avg("dis_price_released").over(w)) df2.select("dis_price_released", "mean").show(10) +------------------+----+ |dis_price_released|mean| +------------------+----+ | 0.0| 0.0| | 0.0| 0.0| | 0.0| 0.0| | 0.0| 0.0| | 0.0| 0.0| | 0.0| 0.0| | 0.0| 0.0| | 0.0| 0.0| | 0.0| 0.0| | 0.0| 0.0| +------------------+----+ 并插入.。 如果它是正确的,那么你必须像你的方法一样遍历你的字符串

new line

更新#1

因为我在上面的函数中遇到了一些错误,所以我做了一个新的例子并用这些案例进行了测试。现在function trimString($string, $length){ $str_length = strlen($string); if ($str_length <= $length){ return $string; } $from = 0; $string_value = ''; // max amount of loops based on the length of $string and $length $loops = ceil($str_length / $length); for ($i = 1; $i <= $loops; $i++) { // $from could be 0 or the length of your last finding dot $tmp_length = $from + $length; if ($tmp_length > $str_length) { break; } // get the position of the dot after the calculated length $pos = strpos($string , ".", $tmp_length); // append the dot and a br-tag for a new line $string_value .= substr(substr($string, 0, $pos), $from) . ".<br/>"; // set to the next position after the finding dot $from = $pos + 1; } return $string_value; } echo trimString("This is a test. This is not a test. This is a new test.", 5); 的最后一次出现也会被注意到 我希望这会对你有所帮助

$search