2015-10-17 87 views
4

我需要将字符串拆分为两个等长的部分。字符串可以包含空格,逗号或任何其他字符。我已经从链接http://www.testingbrain.com/php-tutorial/php-explode-split-a-string-by-string-into-array.html中引用并尝试了explode语句的代码示例,但是它没有显示任何样本用于以相等长度进行分割。使用PHP将字符串拆分为两个长度相等的部分使用PHP

还有一件事,虽然分裂词不应该打破。

+0

有没有PHP的这个默认函数? – syam

+0

可能重复的[如何根据位置拆分字符串](http://stackoverflow.com/questions/15821635/how-to-split-a-string-based-on-position) –

+0

没有断字,你怎么会使确切的一半?? –

回答

2

在这里你去。

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

这不是解决分词的问题。 – fico7489

0

好的开始,但是对于任何奇数长度的链来说,最初的规格应该有所改进,这是不可能的!这就是说,如果您将规格更改为大致相等的长度,那么我将分析半-1字符是否为非英文字母,如果是这样切的话,如果是按字母顺序标识前一个和下一个空格位置并切割成最接近一半

0

我认为这是有好的开始:

$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/>'; 
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); 
+0

谢谢,它解决了 – syam

相关问题