2015-10-17 63 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

相關問題