2011年09月04日

split関数じゃなくて、preg_split関数を使いましょう♪


水曜ぐらいからまた暑くなるとか……イヤだなぁ(-_-)


split の基本形はこちらです↓
split(パターン, テキスト, 部分文字列のリミット)

テキストをパターンで分割して、部分文字列の配列を返す、
という関数です。

やってみた方が分かりそうなんで、早速試してみました↓

<HTML>
<HEAD>
<TITLE>split関数の例</TITLE>
</HEAD>
<BODY>

<?php
$paragraph = "Oh, my god!! I can't believe you ";
$paragraph .= "did that to me. You did that to ";
$paragraph .= "me because you don't love me anymore, do ";
$paragraph .= "you? What? I can't hear you!";

$sentence = split("[\.\!\?]", $paragraph, 5);

for($index = 0; $index < count($sentence); $index++)
{
print("index. $sentence[$index] <BR>\n");
}
?>

</BODY>
</HTML>

結果はこちら↓

Deprecated: Function split() is deprecated in C:\xampp\htdocs\split.php on line 13
index. Oh, my god
index.
index. I can't believe you did that to me
index. You did that to me because you don't love me anymore, do you
index. What? I can't hear you!


とりあえずエラーメッセージは無視してください(^^;)

2行目が空白なのは、「!!」とびっくりマークが2つ続いてるからですよね。
こうなるかなぁと期待して、わざとやってみました♪

でも1つだけ思うようになってない部分がある……(-_-)
2つ目の「?」の部分です。

原因に思い当たったので、こんな感じに修整してみました↓

<?php
$paragraph = "Oh, my god!! I can't believe you ";
$paragraph .= "did that to me. You did that to ";
$paragraph .= "me because you don't love me anymore, do ";
$paragraph .= "you? What? I can't hear you!";

$sentence = split("[\.\!\?]", $paragraph, 6);

for($index = 0; $index < count($sentence); $index++)
{
print("index. $sentence[$index] <BR>\n");
}
?>

部分文字列のリミットを 6 にしてみました(^^)v
結果はこちらです↓

Deprecated: Function split() is deprecated in C:\xampp\htdocs\split.php on line 13
index. Oh, my god
index.
index. I can't believe you did that to me
index. You did that to me because you don't love me anymore, do you
index. What
index. I can't hear you!


うまくいきました〜\(^O^)/

さて、エラーに戻りますが、
split が非推奨の関数なんです。

ここ数日 ereg系の関数を preg系の関数に置き換えるってのをやってますが、
これも preg_split っていう関数を使います↓

<?php
$paragraph = "Oh, my god!! I can't believe you ";
$paragraph .= "did that to me. You did that to ";
$paragraph .= "me because you don't love me anymore, do ";
$paragraph .= "you? What? I can't hear you!";

$sentence = preg_split("/[\.\!\?]/", $paragraph, 6);

for($index = 0; $index < count($sentence); $index++)
{
print("index. $sentence[$index] <BR>\n");
}
?>

1つ目の引数を「//」で挟むのをお忘れなく♪

結果はこうなりました↓

index. Oh, my god
index.
index. I can't believe you did that to me
index. You did that to me because you don't love me anymore, do you
index. What
index. I can't hear you!


きれいにキマりました〜\(^O^)/


実はこれに関連する関数がもう1つあります↓
explode関数

正規表現にこだわらなければ、explode関数の方が速いみたいですね♪


<お知らせ>----------------------------------------------------------------------------------------

contentsmasterBnew.jpg

アフィリエイト支援システム「コンテンツマスターPro」 13,800円

----------------------------------------------------------------------------------------<お知らせ>



PHP公式マニュアルのこちらのページを参考にさせていただきました↓
http://php.net/manual/ja/function.split.php
ありがとうございました<(_ _)>


あと、preg系の関数に置き換えることについては、こちらのブログにも書いてます↓
正規表現の関数: まずは ereg関数

ereg関数の続きで、まだまだつまづく……
eregiも、preg_matchを使うんだよ♪



posted by れい at 23:52| Comment(0) | データ関数 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

×

この広告は1年以上新しい記事の投稿がないブログに表示されております。