Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP将字符串拆分为两个等长部分_Php_Arrays_String_Split_Explode - Fatal编程技术网

使用PHP将字符串拆分为两个等长部分

使用PHP将字符串拆分为两个等长部分,php,arrays,string,split,explode,Php,Arrays,String,Split,Explode,我需要将字符串分成两个等长部分。字符串可以包含空格、逗号或任何内容。我已经参考并尝试了链接中explode语句的代码示例,但没有显示任何等长拆分的示例 还有一件事,分词时不应打断。给你 $str="Test string"; $middle=strlen($str)/2; $first=substr($str,0,$middle); $last=substr($str,$middle); 我认为这是一个良好的开端: $string = "My name is StackOcerflow and

我需要将字符串分成两个等长部分。字符串可以包含空格、逗号或任何内容。我已经参考并尝试了链接中explode语句的代码示例,但没有显示任何等长拆分的示例

还有一件事,分词时不应打断。

给你

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

我认为这是一个良好的开端:

$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/>';
$string=“我的名字是StackOcerflow,我喜欢编程,再加一个逗号。下一句话。”;
$words=preg_split(“/()/”,$string);
打印(大写);
$length=0;
foreach($words作为$word){
$length+=strlen($word);
}
$string_new=“”;
$string_new2=“”;
$length_half=0;
foreach($words作为$word){
$length_half+=strlen($word);
如果($length\u half>=($length/2)){
$string_new2.=$word.';
}否则{
$string_new.=$word.';
}
}
回音“

”; 回显“已满=”$绳子。”
; 回声“First=”$“新的。”
; 回声“秒=”$字符串_new2。”
; 回显“第一个长度=”。斯特伦($string_new)。'
; 回声“秒=”。斯特伦($string_new2)。'

这将在不中断单词的情况下拆分,最多可能拆分文本的一半,但它可以拆分为任何其他字符(
@
等)


PHP中是否有任何默认函数可用于此目的?在不中断单词的情况下,如何使其精确到一半?如果希望在不中断单词的情况下拆分字符串,请看以下内容:这并不能解决拆分单词的问题。
$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);