我一直試圖解析一個網站,通過使用DOMelements。 一切工作正常,除了這個問題對我沒有意義。PHP - DOMelement select不返回選項值
有一個選擇框,我需要它的所有可能的選項值的內容:
<select name="super_attribute[141]" id="attribute141" class="required-entry super-attribute-select">
<option value="">Choose size</option>
<option value="36" price="0">36</option>
<option value="38" price="0">38</option>
<option value="41" price="0">40</option>
<option value="43" price="0">42</option>
<option value="45" price="0">44</option>
<option value="47" price="0">46</option>
<option value="49" price="0">48</option>
</select>
我想要檢索包含值(任一個的innerHTML或「值」屬性)的陣列。我使用此代碼:
foreach ($dom->getElementsByTagName('option') as $option_tag) {
$sizes_list[] = $option_tag->getAttribute('value');
}
但是,總是隻有一個「選項」標記返回,並且爲空值。 所以我嘗試了不同的方法:
$item_options = $dom->getElementById('attribute141');
print(sizeof($item_options->childNodes)); // Prints "1"
foreach ($item_options->childNodes as $child) {
$sizes_list[] = $child->getAttribute('value');
}
$cloth_item->setSizes($sizes_list);
而且又似乎在尋找這個空單值...爲什麼我不能訪問的其餘的選項?
我無法重現您的問題。我對代碼1和代碼2都有正確的值。上面是你的真正的HTML /代碼? – fusion3k
是的。我一直在閱讀和進一步檢查,也許這個問題可能會在頁面加載時出現(然後我捕獲$ dom),然後它又改變了嗎? 例如,某些腳本在頁面完全加載後的一小會兒,從其他地方加載select的值。我不確定它在PHP中如何工作,但是這意味着我所持有的$ dom是「舊」嗎? – Calus
你能發佈抓取頁面的真實URL嗎? – fusion3k