2017-09-30 11 views
5

はじめに、わからないことを明確にするために、私はAPIを構築するまでウェブサイト管理者がこれを行うことに全面的に同意します。PHPでの簡単なWeb廃棄

私がしたいことは、サイト内の特定の部分で見つかった数字やデータを取得することです。ただし、その場所が変更される可能性があります。

file_get_contentsを通して変数にhtmlを格納していて、ソースのどこかで見つけたいと思った例は、"<p>User status: Online.</p>"です。変数に"status: "".</p>"の間にテキストを格納する必要がありますが、これらの2つの文字列が分かっているだけですが、その2つのテキストが同じ行にある可能性のあるシナリオは1つだけです。あなたの時間

編集:私はこれの最も重要な部分を忘れてしまったようです。さて、あなたがテキストをたくさん持っている場合、テキストとテキストの間に何があるのか​​を見つけて、それを変数に格納するにはどうすればいいのでしょうか?

+3

:すべてのステータスが期間内に終了した場合にここで

は期間なしで、単に「オンライン」を返しますパターンで、わからなかったが、ここでは次のようになります。あなたの質問?** – ProEvilz

+1

それは私の非常に愚かな、更新されました。 – Markski

答えて

4

ウェブサイトをスクラップするには、CSS Selectorsを使用する方法と、XPathを使用する方法があります。いずれもDOMの要素を選択します。

私はウェブページの完全なHTMLを見ることができないので、どの方法があなたに適しているかを判断することは難しいでしょう。眉をひそめるかもしれない別の選択肢がありますが、この場合はうまくいく可能性があります。

あなたは文字を見つけるためにRegex (regular expressions)を使用することができ、私は正規表現ではベストではないんだけど、ここでそれがうまくいくかもしれない方法のいくつかのサンプルコードです:

<?php 

$subject = "<html><body><p>Some User</p><p>User status: Online.</p></body></html>"; 
$pattern = '/User status: (.*)\<\/p\>/'; 
preg_match($pattern, $subject, $matches); 
print_r($matches); 

?> 

出力例:

Array 
(
    [0] => User status: Online.</p> 
    [1] => Online. 
) 

基本的に上記の正規表現は、パターンをマッチングすることです。この場合、文字列 "User status:"を検索し、すべての文字(。*)を末尾の段落タグ(エスケープされた)まで一致させます。だから何がある**

'/User status: (.*)\.\<\/p\>/' 
+0

私はこれを試してみることができます、非常にありがとうございます – Markski

+0

@マークスyaの心配! – Asleepace

関連する問題