file_get_contentsで取得した文字列の一部分を抽出する方法 - PHPプロ!Q&A掲示板

2103

  • 0P

file_get_contentsで取得した文字列の一部分を抽出する方法

質問日時 / 2009年6月19日 15:52    回答数 / 2件

Questioner:  satobou  このエントリーをはてなブックマークに追加 

キーワード / file_get_contents   

どうもはじめまして。

file_get_contents関数で、外部のURLを指定して、ソースを文字列として取得しています。

その際に、文字列(ソースの中身)の一部分を抽出したいのですが、そのようなことはできますでしょうか?

例えば、文字列に<table class="main">が出てくる位置から、
<table class="sub">が出てくる手前までを残して、その部分のみを変数に格納するようなことをしたいと思っています。

よろしくお願い致します。

この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。



ツリー一覧

┗A01yakou850方法としては「preg_match」を使えばできるんじゃない
 ┗A01-1satobouyakou850さん、ご返信どうもありがとうございます。

回答一覧

並び替え:

A01 満足
answereryakou850 [6月19日 16:02]

方法としては「preg_match」を使えばできるんじゃないでしょうか?

  1. $html_source = file_get_contents(...);
  2. $pattern = '/<table class="main">(.*)<table class="sub">/';
  3. preg_match($pattern, $html_source, $match);
  4.  
  5. var_dump($match); // 確認用
みたいな。即席で書いた上に該当のデータがいくつあるか分からないので直す必要があるかと思いますが、
ポイントは$pattern(わかりやすく変数にしましたが正規表現の部分)の「(.*)」で、
該当した部分を「グループ」と呼びます。その値を使えば期待通りにいけるんじゃないでしょうか。

# ちなみに$match[0]は正規表現で一致した文字列全体(<table ...>も入っているはず)。
# $match[1]からはカッコでグループにした該当の文字列が入るはずです。

この意見に回答する

ツリーへ TOPへ

A01-1
replyersatobou [6月19日 17:08] (最終編集:6月19日 17:09)

yakou850さん、ご返信どうもありがとうございます。

書いていただいたコードと同じように、自分のコードを書き換えてみました。

$patternに日本語を含んでしまうので、preg_matchではなく、mb_eregに変えて実行してみたところ、
無事に思い通りの結果を得ることができました。

2時間ぐらいひたすら検索して調べていたので、本当に助かりました!

丁寧に教えてくださいまして、どうもありがとうございました(^^)

この意見に回答する

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
html、phpの初心者です。
 このエントリーをはてなブックマークに追加 
A
いいえ、xamppのデフォルト設定では、 .phpファイルはphpとして動作しますが、 .htmlファイルはそのままHTMLとしてブラウザに送られる(表示される)だけです。 .htmlファイルの中にphpスクリプトを書いても、プ...

>>続きを読む

初心者の方のよくある勘違いだったりする気がします。HTMLをPHPとして動かす際には、.htaccessなどで設定を行わなければいけませんね。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)