ギリシャ文字のマルチバイト文字列を取り、それをわずか 3 行に切り詰めようとしています。私のアプローチは、マルチバイト文字列を文字配列に分割し、それをループして、文字列内の改行を検出しようとすることでした。ただし、文字列はまったくトリミングされておらず、奇妙なエラーが発生しています。
コードは次のとおりです。
$break_count = 0;
$char_array = array();
$speech_string = "";
$break_array = array();
foreach($total_found as $speech)
{
$temp = preg_split('/(?<!^)(?!$)/u', $speech->speech_text );
foreach($temp as $char){
if($char=="\n"){
$break_count++;
array_push($break_array,"LB");
}
if($break_count < 4)
{
array_push($char_array,$char);
}else{
die(print_r(var_export($break_array) . " : " . $break_count,1));
break;
}
}
$string = join("",$char_array);
array_push($speech_array,$string);
$break_count = 0;
$loop_count++;
}
$break_count は、これまでに発生した改行の数を検出するために使用している変数であり、改行が 3 つを超える場合は、文字が $char_array 変数にプッシュされるのを停止する必要があります。print_r は、4 つの改行と、4 つの「LB」要素を含む配列を返す必要があります。ただし、次のように返されます: array ( 0 => 'LB', 1 => 'LB', 2 => 'LB', 3 => 'LB', 4 => 'LB', 5 => 'LB' , 6 => 'LB', 7 => 'LB', 8 => 'LB', ) : 4 これは、私のコードが $break_array にさらに改行をプッシュしていることを意味します。 $break_count = 4.
どんな助けでも大歓迎です。