I need to get all the values of a dropdown in an array based upon the id
of the dropdown using PHPQuery.
The following is the HTML:
<select name="semester" id="semester" class="inputtxt" onChange="javascript:selectSemester(this, this.form);">
<option value="">-- Select your Semester --</option>
<option value="2nd" selected>2nd</option>
<option value="4th" >4th</option>
<option value="6th" >6th</option>
<option value="8th" >8th</option>
<option value="SE1" >SE1</option>
<option value="SE3" >SE3</option>
<option value="SE5" >SE5</option>
<option value="SE7" >SE7</option>
</select>
I tried this:
$semesters = $all['#semester'];
foreach ($semesters as $semester) {
echo pq($semester)->text();
echo '<br>';
}
But I get only a single output with all the values concatenated. How do I get each value as separate element in an array?
We can extract all the options in a dropdown in Selenium with the help of Select class which has the getOptions() method. This retrieves all the options on a Select tag and returns a list of web elements. This method does not accept any arguments.
$('#select_all'). click(function() { $('#countries option'). prop('selected', true); });
This code works fine for me:
// include part...
$ids = array();
$raw = file_get_contents("http://localhost:8000/test.html"); // your url
$doc = phpQuery::newDocument($raw);
phpQuery::selectDocument($doc);
/** @var DOMElement $opt */
foreach (pq('#semester > option') as $opt) {
$ids[] = ($opt->getAttribute('value'));
}
print_r($ids); // check if the array has the values stored
So result is
Array
(
[0] =>
[1] => 2nd
[2] => 4th
[3] => 6th
[4] => 8th
[5] => SE1
[6] => SE3
[7] => SE5
[8] => SE7
)
BTW, you can use $doc['#semester > option']
instead of pq('#semester > option')
, both variants works fine. If you need to omit some option
- you'd make filter based on option
attributes, like if ($opt->getAttribute('value') != "")
.
quick trick before you reinvent the wheel, use simple_html_dom, you can find it in http://sourceforge.net/projects/simplehtmldom/ this class has being extremely useful in the past and you can even modify it to either use it with CURL or a string containing HTML code.
You will be able to search for objects (tags) or IDs and get the contents of the tag, or iterate in more friendly way.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With