人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPのpreg_match関数について質問です。

現在正規表現にてデータを抜き取っているのですが、うまくデータを抜き取ることができません。

preg_match関数の定型を作っていただいたのですが、

preg_match('|<td> (.*?) </td>|', $html, $matches);


'| がデータの始まりで (.*?)が抜き取りたいデータ |'がデータの終わり , 抜き取りたいデータが入っている変数, 結果を入れる変数)

と認識しております。

やろうとしていた事ですが、

自分がデータベースへ保存したHTMLデータを一度変数に入れてそれを正規表現で抜き取ろうとしています。
(会員制サイトでしたので自分でHTMLを直接データベースへ一度保存しています。)

データベースからきちんとHTMLを変数に入れているのですが、正規表現後の各データを変数に保存できない状況です。

echo文で出力したのですが 何も表示されません(空白です。)

もし時間がある人おりましたらスクリプトを一度見ていただけないでしょうか。

お手数をおかけしますがよろしくお願いいたします。

●質問者: aiomock
●カテゴリ:コンピュータ インターネット
✍キーワード:ECHO HTML PHP サイト スクリプト
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● iser
●35ポイント

正規表現のパターン文字列は|で囲むのではなくて/では?

http://jp.php.net/manual/ja/function.preg-match.php

◎質問者からの返答

ご回答ありがとうございます。


2 ● GoldenDawn
●100ポイント ベストアンサー

場合によってはさらに手直しの必要があるかと思いますが、二ケ所の preg_match に関して

<?php
preg_match('|<tr class="odd">.*?<td align="left"><strong>終了数</strong></td>.*?<td align="right">(.*?)</td>|s', $html, $matches) ;
// 改行に関する処理を追加
<?php
preg_match('|<td align="left"><strong>総落札額\(円\)</strong></td>.*?<td align="right">(.*?)</td>|s', $html, $matches) ;
// カッコをエスケープ
// データにない文字を削除
◎質問者からの返答

ご回答ありがとうございます。

実行できました。

改行されているところは .*? を使って

改行されているところのデータを取るときは 最後の l を ls にするということですね^^。

ご回答いただき本当にありがとうございます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ