1

次のような utf-8 テキストが必要です。

「Bára, ta která má hezké oči. To je, ale nepříčetně nehorázné!」

次のように、単語と句読点の配列に分割します。

Array (
    [0] => Bára
    [1] => ,
    [2] => ta
    [3] => která
    [4] => má
    [5] => hezké
    [6] => oči
    [7] => .
    [8] => To
    [9] => je
    [10] => ,
    [11] => ale
    ...
)

ここでいくつかの例を試しましたが、どちらも utf8 テキスト (á または ě の分割テキスト) では機能しませんでした。

4

2 に答える 2

1

これはどう:

$string   = 'Bára, ta která má hezké oči. To je, ale nepříčetně nehorázné!';
$rawSplit = preg_split('/\b/u', $string, 0, PREG_SPLIT_NO_EMPTY);
$result   = array_filter( array_map( function($el) { 
  return trim($el); 
}, $rawSplit));
于 2012-06-15T10:05:50.093 に答える
1

php.netのコメントから引用(わずかに変更):

function mb_str_split( $string ) {
  $split = preg_split('/\b([\(\).,\-\',:!\?;"\{\}\[\]„“»«‘\r\n]*)/u', $string, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
  return array_filter($split, 'filter');
}

function filter($val) {
  if (trim($val) != '') {
    return trim($val);
  }
  return false;
}

テスト:

print_r(mb_str_split("Bára, ta která má hezké oči. To je, ale nepříčetně nehorázné!"));

/*
Array
(
    [0] => Bára
    [1] => ,
    [3] => ta
    [5] => která
    [7] => má
    [9] => hezké
    [11] => oči
    [12] => .
    [14] => To
    [16] => je
    [17] => ,
    [19] => ale
    [21] => nepříčetně
    [23] => nehorázné
    [24] => !
)
*/
于 2012-06-15T10:04:57.080 に答える