在多行php中中断长字符串变量

在多行php中中断长字符串变量,php,html,Php,Html,我创建了一个存储很长字符串的变量,我想把这个变量打印成多行 $test ="This is some example text , I want to print this variable in 3 lines"; 上述$test的输出将是 This is some example text, I want to print this variabale in 3 lines 注意:我想在每15个字符后加一行,或者每行有相等的字符。我不想在变量赋值过程中添加break标记或任何其他标记。现

我创建了一个存储很长字符串的变量,我想把这个变量打印成多行

$test ="This is some example text , I want to print this variable in 3 lines";
上述$test的输出将是

This is some example text,
I want to print this
variabale in 3 lines

注意:我想在每15个字符后加一行,或者每行有相等的字符。我不想在变量赋值过程中添加break标记或任何其他标记。

现在一切正常。您只需传递字符数中的$string和@maxlenght,函数将返回带有剪切字符串的表

不要断章取义, 千万别和maxLenght约会, 唯一需要记住的是,你需要注意逗号的用法,即:单词,单词

$test ="This is some example text, I want to print this variable in 3 lines dasdas das asd asd asd asd asd ad ad";

function breakString($string, $maxLenght) {

    //preparing string, getting lenght, max parts number and so on
$string = trim($string, ' ');
$stringLenght = strlen($string);
$parts = ($stringLenght / $maxLenght );
$finalPatrsNumber = ceil($parts);   
$arrayString = explode(' ', $string);
    //defining variables used to store data into a foreach loop
$partString ='';
$new = array();
$arrayNew = array();

   /**
    * go througt every word and glue it to a $partstring
    * 
    * check $partstring lenght if it exceded $maxLenght 
    * then delete last word and pass it again to $partstring
    * and create now array value
    */

foreach($arrayString as $word){
    $partString.=$word.' ';

    while(  strlen( $partString ) > $maxLenght) {
        $partString = trim($partString, ' ');
        $new = explode(' ', $partString);
        $partString = '';
        $partString.= end($new).' ';  
        array_pop($new);
        //var_dump($new);
        if( strlen(implode( $new, ' ' )) < $maxLenght){
            $value = implode( $new, ' ' );
            $arrayNew[] = $value;
        }        
    }    
}

//    /**
//    * psuh last part of the string into array
//    */
$string2 = implode(' ', $arrayNew);


$string2 = trim($string2, ' ');
$string2lenght = strlen($string2);
$newPart = substr($string, $string2lenght);
$arrayNew[] = $newPart;

  /**
   * return array with broken $parts of $string 
    * $party max lenght is < $maxlenght 
    * and breaks are only after words
   */
return $arrayNew;

}

   /**
    * sample usage
    * @param string $string
    * @param int $maxLenght Description
    */

foreach( breakString($test, 30) as $line){
    echo $line."<br />";
}
顺便说一句,你可以很容易地在这里添加一些规则,如:

最后一行没有一个字符,或者在某些单词上没有中断,等等;
好了,现在一切都好了。您只需传递字符数中的$string和@maxlenght,函数将返回带有剪切字符串的表

不要断章取义, 千万别和maxLenght约会, 唯一需要记住的是,你需要注意逗号的用法,即:单词,单词

$test ="This is some example text, I want to print this variable in 3 lines dasdas das asd asd asd asd asd ad ad";

function breakString($string, $maxLenght) {

    //preparing string, getting lenght, max parts number and so on
$string = trim($string, ' ');
$stringLenght = strlen($string);
$parts = ($stringLenght / $maxLenght );
$finalPatrsNumber = ceil($parts);   
$arrayString = explode(' ', $string);
    //defining variables used to store data into a foreach loop
$partString ='';
$new = array();
$arrayNew = array();

   /**
    * go througt every word and glue it to a $partstring
    * 
    * check $partstring lenght if it exceded $maxLenght 
    * then delete last word and pass it again to $partstring
    * and create now array value
    */

foreach($arrayString as $word){
    $partString.=$word.' ';

    while(  strlen( $partString ) > $maxLenght) {
        $partString = trim($partString, ' ');
        $new = explode(' ', $partString);
        $partString = '';
        $partString.= end($new).' ';  
        array_pop($new);
        //var_dump($new);
        if( strlen(implode( $new, ' ' )) < $maxLenght){
            $value = implode( $new, ' ' );
            $arrayNew[] = $value;
        }        
    }    
}

//    /**
//    * psuh last part of the string into array
//    */
$string2 = implode(' ', $arrayNew);


$string2 = trim($string2, ' ');
$string2lenght = strlen($string2);
$newPart = substr($string, $string2lenght);
$arrayNew[] = $newPart;

  /**
   * return array with broken $parts of $string 
    * $party max lenght is < $maxlenght 
    * and breaks are only after words
   */
return $arrayNew;

}

   /**
    * sample usage
    * @param string $string
    * @param int $maxLenght Description
    */

foreach( breakString($test, 30) as $line){
    echo $line."<br />";
}
顺便说一句,你可以很容易地在这里添加一些规则,如:

最后一行没有一个字符,或者在某些单词上没有中断,等等; 试试这个

<?php
$test ="This is some example text , I want to print this variable in 3 lines";
$explode=explode(" ",$test);
$String='';
$newString='';
$maxCharacterCount=23;
foreach ($explode as $key => $value) {
    $strlen=strlen($String);
    if($strlen<=$maxCharacterCount){
            $String.=' '.$value;

        }else{
            $newString.=$String.' '.$value.'<br>';
            $String='';

        }
     }
     $finalString= $newString.$String;
     echo $finalString;
?>
试试这个

<?php
$test ="This is some example text , I want to print this variable in 3 lines";
$explode=explode(" ",$test);
$String='';
$newString='';
$maxCharacterCount=23;
foreach ($explode as $key => $value) {
    $strlen=strlen($String);
    if($strlen<=$maxCharacterCount){
            $String.=' '.$value;

        }else{
            $newString.=$String.' '.$value.'<br>';
            $String='';

        }
     }
     $finalString= $newString.$String;
     echo $finalString;
?>
试试这个

 <?php 
    $test ="This is some example text , I want to print this variable in 3 lines";
    $array = str_split($test, 10); 

    echo implode("<br>",$array);
基于此链接

试试这个

 <?php 
    $test ="This is some example text , I want to print this variable in 3 lines";
    $array = str_split($test, 10); 

    echo implode("<br>",$array);
基于此链接


最简单的解决方案是使用wordwrap,并在新行上分解,如下所示:

$array = explode( "\n", wordwrap( $str, $x));
其中,$x是要包装字符串的字符数。
复制自

最简单的解决方案是使用wordwrap,并在新行上分解,如下所示:

$array = explode( "\n", wordwrap( $str, $x));
其中,$x是要包装字符串的字符数。


复制自

以及您打算如何确定何时应显示换行符?-还有,你有没有自己尝试过让它发挥作用?如果是这样的话,请在问题中加上你的任何错误。我不知道,我想在每15个字符后加一行。@SadamAfridi检查我的回答,以及你打算如何确定何时应该出现换行符?-还有,你有没有自己尝试过让它发挥作用?如果是这样的话,请把它和你遇到的任何错误一起包括在问题中。我不知道,我想在每15个字符后面加一行。@SadamAfridi检查我的答案。没有其他选项需要添加,或者括号中有一些选项。。。就像字数计算一样……如果字符串中没有逗号,那么这将不起作用。@daulat您无法预测每个单词的长度。。。您不能仅根据特定的字数剪切字符串,并期望行的长度大致相同…您不需要添加其他选项,或者括号中的内容有一些选项。。。就像字数计算一样……如果字符串中没有逗号,那么这将不起作用。@daulat您无法预测每个单词的长度。。。你不能只根据特定的字数剪切一个字符串,而期望行的长度大致相同……我会尝试按照它来做。你的最后一句话需要一些明确的代码:用progres编码;我想普姆有点长;扑通一声,未加注释。。。。所以不可读:pI将尝试跟随它。你的最后一句话将需要一些明确的代码:在progres中编码;我想普姆有点长;扑通一声,未加注释。。。。太不可读了:P汉克斯,它对我有用。@SadamAfridi你不介意它把一个单词分成两行吗?是的,这仍然是一个问题,但很难防止将单词分成两行,你有什么解决办法吗@普拉尚特的解决方案并没有切中要害。您可以在这里定义12个字符的最大行长度max@SadamAfridi通过编辑,现在两者都可以工作了。。。无法理解编辑会发生什么。。。Prashant的解决方案现在是错误的答案。。。奇怪的事情发生在这里…:谢谢,它对我有用。@SadamAfridi如果它把一个单词分成两行,你不介意吗?是的,这仍然是一个问题,但很难防止将单词分成两行,你有什么解决办法吗@普拉尚特的解决方案并没有切中要害。您可以在这里定义12个字符的最大行长度max@SadamAfridi通过编辑,现在两者都可以工作了。。。无法理解编辑会发生什么。。。Prashant的解决方案现在是错误的答案。。。奇怪的事情发生在这里…: