フォーム(textarea)なんかで取得した文章を、文末で1文ごとに区切って配列に入れたいと思ったので、色々調べてみた。
で、以下でできたのでシェア。
// 文末(「。」と「.」を文末とする)と改行を改行コード「\n」に統一
$br = array("。", ".","\r\n","\r");
$bun = str_replace($br,"\n",$bun);
// 文章の前後と文頭文末(文節の前後)の空白を削除
$bun = trim(mb_convert_kana($bun,"s",'UTF-8'));
$Ss = array(" \n"," \n","\n ","\n ");
$bun = str_replace($Ss,"\n",$bun);
// 改行コードで分割して配列に格納
$arr_bun = explode("\n",$bun);
// 配列の中の空要素を削除して配列番号を振り直す
$arr_bun = array_values(array_filter($arr_bun, "strlen"));
ちなみに、取得した配列をどこかに表示するなら、POST(もしくはGET)で取得した時に以下のようにしておいた方が良い。
$bun = htmlspecialchars($_POST["bun"],ENT_QUOTES);
これをすると、
<a href="hoge">
が
<a href="hoge">
のようになり、不正なhtmlタグやJavaScriptを実行される事を未然にある程度防ぐ事が可能。

コメント