フォーム(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を実行される事を未然にある程度防ぐ事が可能。
コメント