【问题标题】:Split a string into two equal length parts using PHP [duplicate]使用PHP将字符串拆分为两个相等长度的部分[重复]
【发布时间】:2016-01-16 01:39:42
【问题描述】:

我需要将一个字符串分成两个长度相等的部分。字符串可以包含空格、逗号或任何内容。我已经参考并尝试了来自链接http://www.testingbrain.com/php-tutorial/php-explode-split-a-string-by-string-into-array.html 的explode 语句的代码示例,但它没有显示任何等长分割的示例。

还有一点,分词不应该打断。

【问题讨论】:

  • PHP 中是否有任何可用的默认函数?
  • 不折不扣,你将如何做到一半??
  • 如果你想在不分词的情况下拆分字符串,看看这个:stackoverflow.com/a/11256141/4832775

标签: php arrays string split explode


【解决方案1】:

给你。

$str="Test string";
$middle=strlen($str)/2;
$first=substr($str,0,$middle);
$last=substr($str,$middle);

【讨论】:

  • 这并不能解决分词问题。
【解决方案2】:

这将在不破坏单词的情况下拆分,在文本的最可能一半处拆分,但它可以在任何其他字符处拆分(,、.、@ 等)

$data = "Split a string by length without breaking word"; //string

if (strlen($data) % 2 == 0) //if lenhth is odd number
    $length = strlen($data) / 2;
else
    $length = (strlen($data) + 1) / 2; //adjust length

for ($i = $length, $j = $length; $i > 0; $i--, $j++) //check towards forward and backward for non-alphabet
{
    if (!ctype_alpha($data[$i - 1])) //forward
    {
        $point = $i; //break point
        break;
    } else if (!ctype_alpha($data[$j - 1])) //backward
    {
        $point = $j; //break point
        break;
    }
}
$string1 = substr($data, 0, $point);
$string2 = substr($data, $point);

【讨论】:

    【解决方案3】:

    我认为这是一个好的开始:

    $string = "My name is StackOcerflow and I like programming, one more comma. Next sentance.";
    $words = preg_split( "/( )/", $string );
    print_r($words);
    
    $length = 0;
    foreach($words as $word){
        $length += strlen($word);
    }
    
    $string_new = "";
    $string_new2 = "";
    $length_half = 0;
    foreach($words as $word){
        $length_half += strlen($word);
        if($length_half >= ($length/2)){
            $string_new2 .= $word . ' ';
        }else{
            $string_new .= $word . ' ';
        }
    }
    echo '<br/><br/>';
    echo 'Full=' . $string . '<br/>';
    echo 'First=' . $string_new . '<br/>';
    echo 'Second=' . $string_new2 . '<br/>';
    echo 'First length=' . strlen($string_new) . '<br/>';
    echo 'Second=' . strlen($string_new2) . '<br/>';
    

    【讨论】:

      猜你喜欢
      • 2014-05-04
      • 2013-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-11
      • 2015-10-05
      • 2021-09-10
      相关资源
      最近更新 更多