PR

【PHP】文章を1文ごとに区切って配列に格納する方法

スポンサーリンク

フォーム(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">

&lt;a href=&quot;hoge&quot;&gt;
のようになり、不正なhtmlタグやJavaScriptを実行される事を未然にある程度防ぐ事が可能。

コメント