2017-02-15 12 views
0

このようなHTMLページがあるとします。PHP構文解析を使用してHTML要素の名前を取得します

<input type="text" name="name" /> 
<input type="hidden" name="test" value="test_result1" /> 
<input type="hidden" name="test2" value="test_result2" /> 

は、私はその後、(のfile_get_contentsを使用して?、URLから)そのHTMLページを解析タイプ「隠し」を持っている入力要素の名前を取得したいです。

は基本的に私は、そのページから解析したいもの

test 
test2 

これを行うにはそこに方法はありますか?私は(SimpleHTMLDomのような)解析ライブラリを調べましたが、できませんでした。 SimpleHTMLDom

$html = file_get_html('http://www.google.com/'); 

// Find all inputs 
foreach($html->find('input') as $element){ 
    $type = $element->type; 
    if($type=='hidden'){ 
     echo $element->name. '<br/>'; 
    } 
} 
+0

あなたは適切な場所を見て、使い方を学ばなければなりません。 –

+0

@JayBlanchardこのようなものではありませんか? – user6613235

+0

@JayBlanchard私がそれをするとき、私は完全な行であり、その名前ではありません、あなたはどこを見てください私に教えてくださいできますか? – user6613235

答えて

3

$html = "<html> 
     <body> 
      <form> 
       <input type='text' name='not_in_results'/> 
       <input type='hidden' name='test1'/> 
       <input type='hidden' name='test2'/> 
      </body> 
     </html>"; 

$dom = new DOMDocument; 
$dom->loadHTML($html); 
$inputs = $dom->getElementsByTagName('input'); 

$hiddenInputNames = []; 

foreach ($inputs as $input) { 
    if($input->getAttribute('type') == "hidden") 
     $hiddenInputNames[] = $input->getAttribute('name'); 
} 

var_dump($hiddenInputNames); 
+0

ありがとうございます。 – user6613235

0

PHPを使用したDOMDocumentを使用して

0

これを試してみてください:

include 'simple_html_dom.php'; 
$data = file_get_html('index.html'); 
$nodes = $data->find("input[type=hidden]"); 
foreach ($nodes as $node) { 
    $val = $node->name; 
    echo $val . "<br />"; 
} 

出力:この場合

test 
test2 

を、あなたはphp simple html dom par

0

simple_html_domは使いやすいだけでなく、非常に古いです含める必要がありますし、あまり速くない。 phpのDOMDocumentを使用する方がはるかに高速ですが、simple_html_domほど簡単ではありません。代わりに、DomQueryのようなものがあります。これは基本的にPHPのDOMDocumentへのアクセスのようなjqueryを与えます。

$dom = new DomQuery(file_get_html('index.html')) 
foreach($dom->find('input[type=hidden]') as $elm) { 
    echo $elm->name; 
} 
+3

この質問には数ヶ月前から受け入れられた回答があります。 –

関連する問題