max_maggot Posted July 25, 2015 Share Posted July 25, 2015 I am trying to retrieve a really tricky array of values. The value I am trying to retrieve are the -price values and the text within the price tag -color values which can be more than one option (black and white in this case) <dd> <div class="input-box"> <select name="options[1216]" id="select_1216" class="product-custom-option" title="" onchange="opConfig.reloadPrice()"> <option value="" >-- Please Select --</option> <option value="4185" price="4.99" >4GB +$4.99</option> <option value="4186" price="5.99" >8GB +$5.99</option> <option value="4187" price="9.99" >16GB +$9.99</option> <option value="4188" price="16.99" >32GB +$16.99</option> <option value="4189" price="29.99" >64GB +$29.99</option> </select> </div> </dd> <dt> <label class="required"><em>*</em>Color</label></dt> <dd class="last"> <div class="input-box"> <ul id="options-1215-list" class="options-list"> <li><input type="radio" class="radio validate-one-required-by-name product-custom-option" onclick="opConfig.reloadPrice()" name="options[1215]" id="options_1215_2" value="4183" price="0" /> <span class="label"><label for="options_1215_2">Black </label></span> <script type="text/javascript"> </li> <li> <input type="radio" class="radio validate-one-required-by-name product-custom-option" onclick="opConfig.reloadPrice()" name="options[1215]" id="options_1215_3" value="4184" price="0" /> <span class="label"><label for="options_1215_3">White </label></span> </li> </ul> </div> I have wrtten the following code to try and retrieve the values of the price but to no avail. I'm trying to use a wildcard character in the xquery to try because other pages will have different option names. Here is what I came up with so far. There won't be more than 20 options on a page. Any help would be much appreciated. Thanks in advance. $option_array = array(); for($k = 1; $k <= 20; $k++) { $option_array[$k] = $xpath->query("//div[@class='input-box']//select/*/option[$k]/@price")->item(0)->textContent; //If we have captured all the images then we need to exit the for loop if($option_array[$k] == null){ break; } } Link to comment https://forums.phpfreaks.com/topic/297461-php-trying-to-retieve-a-tricky-value-using-xquery-with-wildcard/ Share on other sites More sharing options...
Ch0cu3r Posted July 25, 2015 Share Posted July 25, 2015 I wouldn't use a for loop. Better to foreach loop over the elements returned from the xpath query, example $option_array = array(); // finds all <option price="xxx">zzz</option> tags in <div class="input-box"> foreach($xpath->query("//div[@class='input-box']//option[@price]") as $option) { // add price attribute value and and option tag text items to array $option_array[] = array($option->getAttribute('price'), $option->nodeValue); } Link to comment https://forums.phpfreaks.com/topic/297461-php-trying-to-retieve-a-tricky-value-using-xquery-with-wildcard/#findComment-1517338 Share on other sites More sharing options...
max_maggot Posted July 27, 2015 Author Share Posted July 27, 2015 Thanks so much. Life saver. Link to comment https://forums.phpfreaks.com/topic/297461-php-trying-to-retieve-a-tricky-value-using-xquery-with-wildcard/#findComment-1517451 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.