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; } } Quote 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...
Solution Ch0cu3r Posted July 25, 2015 Solution 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); } Quote 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. Quote 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
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.