2017-03-11 5 views
1

私はちょうどphpで新しく、最近はpreg_match_all()を使用しようとしています。php特定のhtml要素を呼び出して条件を作成します

ソースます:http //:test.com

<tr> 
    <td class="build"> 
    <a id="viewBuild:TEST-TESTAUTO">Sample - Regression 01</a> 
    </td> 
    <td class="planKeySection Successful"> 
    <a id="statusSectionTEST-TESTAUTO" class="statusIcon"> 
    <span class="aui-icon aui-icon-small aui-iconfont-approve" title="build succeeded"> 
    </a> 


<tr> 
<td class="build"> 
<a id="viewBuild:TEST-TESTAUTO02">Sample - Regression 02</a> 
</td> 
<td class="planKeySection Successful"> 
<a id="statusSectionTEST-TESTAUTO02" class="statusIcon"> 
<span class="aui-icon aui-icon-small aui-iconfont-approve" title="build succeeded"> 
</a> 

このコードは動作しません:あなたは上記を参照できるように、私は特定の要素上を取得しようとしている

$content = file_get_contents('http//:test.com'); 

if(preg_match_all("'/<tr>[1]<span class=\"aui-icon aui-icon-small aui-iconfont-approve\"><\/tr>/isU'", $content)) 
    echo "done"; 
}else{ 
    echo "fail"; 
} 

if(preg_match_all("'/<tr>[2]<span class=\"aui-icon aui-icon-small aui-iconfont-approve\"><\/tr>/isU'", $content)) 
    echo "done"; 
}else{ 
    echo "fail"; 
} 

もしそれが<span class="aui-icon aui-icon-small aui-iconfont-approve">なら "done"とエコーしますが、私が得るのは "fail"ですという条件を作ります。

+0

http //:test.comが間違っています。 :は間違っていますhttp://test.com – user3526204

答えて

0
if(count(preg_match_all($pattern, $content))>0) 

または

if(preg_match($pattern, $content)) 

あなたもしなければならないどのようなURLを修正している:それはないhttp//:test.com

+0

^申し訳ありませんがURLはちょうど作られている必要があります。私は別のものを使っていました。とにかく上記のコードを試してみましょう。それがうまくいくことを望みます。ありがとう – Liyo

+0

私はこのタグをただ1つのpreg_matchで呼ぶことができますか? 基本的には、id = statusSectionTEST-TESTAUTO02とclass = "aui-icon aui-icon-small aui-iconfont-approve"がエコーされていれば、それは失敗します。しかし、どうやってそれを書くのかわからない – Liyo

0

最初の部分文字列の使用を一致させるにはhttp://test.comなければならない:

~id="statusSectionTEST-TESTAUTO" class="statusIcon">\s+<span class="aui-icon aui-icon-small aui-iconfont-approve"~

サブストリングの使用:

~id="statusSectionTEST-TESTAUTO02" class="statusIcon">\s+<span class="aui-icon aui-icon-small aui-iconfont-approve"~

ザ・は私だけが空白文字は望ましくないミスマッチを起こさないように\s+たパターンを作成するために、文字列リテラルに行われたことを調整します。

ここでは、2番目のパターンの場合はregex demoです。

コード(PHP Demo)

$content=' <tr> 
    <td class="build"> 
    <a id="viewBuild:TEST-TESTAUTO">Sample - Regression 01</a> 
    </td> 
    <td class="planKeySection Successful"> 
    <a id="statusSectionTEST-TESTAUTO" class="statusIcon"> 
    <span class="aui-icon aui-icon-small aui-iconfont-approve" title="build succeeded"> 
    </a> 


<tr> 
<td class="build"> 
<a id="viewBuild:TEST-TESTAUTO02">Sample - Regression 02</a> 
</td> 
<td class="planKeySection Successful"> 
<a id="statusSectionTEST-TESTAUTO02" class="statusIcon"> 
<span class="aui-icon aui-icon-small aui-iconfont-approve" title="build succeeded"> 
</a>'; 

$pattern='~id="statusSectionTEST-TESTAUTO02" class="statusIcon">\s+<span class="aui-icon aui-icon-small aui-iconfont-approve"~'; 

if(preg_match($pattern,$content)){ 
    echo "found"; 
}else{ 
    echo "not found"; 
} 

あなただけ

<span class="aui-icon aui-icon-small aui-iconfont-approve"はその後strpos()は十分であろうキャプチャしたい場合は、あなたの質問を再読み込みした後:

コード(PHP Demo):

$content=' <tr> 
    <td class="build"> 
    <a id="viewBuild:TEST-TESTAUTO">Sample - Regression 01</a> 
    </td> 
    <td class="planKeySection Successful"> 
    <a id="statusSectionTEST-TESTAUTO" class="statusIcon"> 
    <span class="aui-icon aui-icon-small aui-iconfont-approve" title="build succeeded"> 
    </a> 


<tr> 
<td class="build"> 
<a id="viewBuild:TEST-TESTAUTO02">Sample - Regression 02</a> 
</td> 
<td class="planKeySection Successful"> 
<a id="statusSectionTEST-TESTAUTO02" class="statusIcon"> 
<span class="aui-icon aui-icon-small aui-iconfont-approve" title="build succeeded"> 
</a>'; 
$html ='<span class="aui-icon aui-icon-small aui-iconfont-approve"'; 

if(strpos($content,$html)!==false){ 
    echo "found"; 
}else{ 
    echo "not found"; 
} 
関連する問題