テキストと日時の操作 (3/5)
作成:2010-12-06 09:59
更新:2010-12-06 09:59
更新:2010-12-06 09:59
■正規表現の利用例
では、正規表現の利用例をあげておきましょう。ここでは、URLを入力すると、そのページのテキストを取得し、そこからメールアドレスだけを探し出して表示させてみましょう。
下に挙げたリストがそのソースコードです。入力フィールドに「http://~」というようにして調べたいページのURLを入力し、送信してください。そのページに書かれているメールアドレスを 下のテキストエリアにすべて書き出します。
ここでは、まずfile関数を使ってURLのテキストを読み込み、それをimplodeで1つのテキストにまとめます。それから、パターンを用意し、それを使ってパターンマッチを行っています。
この変数は、けっこう複雑な構造になっています。マッチしたテキストを得るには、インデックス=0の値を取り出します。ここには更に連想配列が入っており、その値部分に探しだしたテキスト(つまり見つけたメールアドレス)が保管されています。
整理すれば、パターンマッチは「結果の配列のインデクス=0にある連想配列から値を取り出す」という作業で、見付け出したテキストがすべて得られる、というわけです。これさえ頭に入れておけば、パターンマッチはけっこう使えますよ。
下に挙げたリストがそのソースコードです。入力フィールドに「http://~」というようにして調べたいページのURLを入力し、送信してください。そのページに書かれているメールアドレスを 下のテキストエリアにすべて書き出します。
ここでは、まずfile関数を使ってURLのテキストを読み込み、それをimplodeで1つのテキストにまとめます。それから、パターンを用意し、それを使ってパターンマッチを行っています。
$pattern = "/([\w-]+)@([\w\.-]+)\b/";これが、用意したパターンです。――だいたい、ここで「げっ、正規表現難しい。無理無理」とあきらめてしまう人が多いんですが、正直、そんな必要はありません。正規表現パターンで検索すると、メールアドレスとか、URLとか、割とよく使われるパターンを公開してくれている人はたくさんいるんです。そうしたパターンをコピーして利用すれば、とりあえずパターンが作れなくても正規表現は利用できます。それから少しずつ自分で勉強していけばいいんですよ。
$flg = preg_match_all($pattern,$data,$matchs);これがパターンマッチを実行している部分ですね。これ自体は、別に難しい物はありません。この$matchsという変数に、パターンマッチした結果が入っているのです。
この変数は、けっこう複雑な構造になっています。マッチしたテキストを得るには、インデックス=0の値を取り出します。ここには更に連想配列が入っており、その値部分に探しだしたテキスト(つまり見つけたメールアドレス)が保管されています。
整理すれば、パターンマッチは「結果の配列のインデクス=0にある連想配列から値を取り出す」という作業で、見付け出したテキストがすべて得られる、というわけです。これさえ頭に入れておけば、パターンマッチはけっこう使えますよ。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
<?php if ($_POST != null){ $url = $_POST['text1']; $lines = file($url); $data = implode($lines); // パターンマッチ $pattern = "/([\w-]+)@([\w\.-]+)\b/"; $flg = preg_match_all($pattern,$data,$matchs); if ($flg != false){ $result = ""; foreach($matchs[0] as $key => $val){ $result .= $val . "\n"; } } else { $result = "ないよ。"; } } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>sample page</title> </head> <body> <h1>Hello PHP!</h1> <form method="post" action="./index.php"> <input type="text" name="text1" size="40" value="<?php echo htmlspecialchars($url); ?>"><br> <textarea name="area1" cols="30" rows="5" ><?php echo $result; ?></textarea><br> <input type="submit"> </form> <hr> </body> </html>
※関連コンテンツ