質問が長くなりましたので、http://d.hatena.ne.jp/esecua/20120320 をご覧下さい。
一例
<?php $t = 'ほげほげ。ほえごほほっじょ。じおじおじおじぇふぇ。ふぇひふいふいへうり、でふいふいえf。'; // 。の出現数 $c = preg_match_all('/。/', $t, $m); echo $c; echo "\n"; // 2文毎に区切る $c = preg_match_all('/(.*。.*。)/U', $t, $m); print_r($m); // 2文毎に区切って、それぞれ【】で囲む $m = preg_split("/\n/", rtrim( preg_replace('!(.*。.*。)!U', "【$1】\n", $t), "\n")); print_r($m);
実行結果
4 Array ( [0] => Array ( [0] => ほげほげ。ほえごほほっじょ。 [1] => じおじおじおじぇふぇ。ふぇひふいふいへうり、でふいふいえf。 ) [1] => Array ( [0] => ほげほげ。ほえごほほっじょ。 [1] => じおじおじおじぇふぇ。ふぇひふいふいへうり、でふいふいえf。 ) ) Array ( [0] => 【ほげほげ。ほえごほほっじょ。】 [1] => 【じおじおじおじぇふぇ。ふぇひふいふいへうり、でふいふいえf。】 )
<? $str = 'ほげほげ。ほえごほほっじょ。じおじおじおじぇふぇ。ふぇひふいふいへうり、でふいふいえf。' ; echo "「。」の数\n" ; echo substr_count($str, '。') ; echo "\n\n2文毎を【~】で区切る\n" ; preg_match_all('/.*?。.*?。/u', $str, $m) ; $a = array_map(create_function('$v', 'return "【".$v."】";'), $m[0]) ; print_r($a) ;
出力例
「。」の数 4 2文毎を【~】で区切る Array ( [0] => 【ほげほげ。ほえごほほっじょ。】 [1] => 【じおじおじおじぇふぇ。ふぇひふいふいへうり、でふいふいえf。】 )
追記。
奇数時の挙動がどうなればいいのかわりませんが。
あと「。」で終わっていない場合も含めるようにしました。
<?php $str = 'ほげほげ。ほえごほほっじょ。じおじおじおじぇふぇ。ふぇひふいふいへうり、でふいふいえf。ごにょごにょ。' ; echo "2文毎を【~】で区切る\n" ; preg_match_all('/(.*?。.*?。)|(.+$)/u', $str, $m) ; $a = array_map(create_function('$v', 'return "【".$v."】";'), $m[0]) ; print_r($a) ;
コメント(2件)