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?
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') != "")
.