PHPQuery Select 下拉列表中的所有值
PHPQuery Select all values from dropdown
我需要使用 PHPQuery 根据下拉列表的 id
获取数组中下拉列表的所有值。
以下是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>
我试过这个:
$semesters = $all['#semester'];
foreach ($semesters as $semester) {
echo pq($semester)->text();
echo '<br>';
}
但我只得到一个输出,所有值都串联在一起。如何将每个值作为数组中的单独元素获取?
重复发明轮子之前的小技巧,使用simple_html_dom,你可以在http://sourceforge.net/projects/simplehtmldom/中找到它这个class在过去非常有用,你甚至可以修改它来将它与 CURL 或包含 HTML 代码的字符串一起使用。
您将能够搜索对象(标签)或 ID 并获取标签的内容,或者以更友好的方式进行迭代。
很简单,您需要 select selector with id 并使用标签对其进行迭代,创建一个空数组并使用 foreach 迭代器将值存储在其中。
$semsterr = array(); //empty Array
//use the option tag for iteration
foreach (pq('select#semester option') as $opt) {
$semsterr[] = pq($opt) -> text();
// $semsterr[] = pq($opt) -> attr('value'); in case you need the value
}
print_r($semsterr); // check if the array has the values stored
您必须在添加数组之前检查该值。
喜欢...
$sem = array();
foreach (pq('#semester option') as $opt) {
if(pq($opt) -> val() != '')
{
$sem[] = pq($opt) -> text();
}
}
print_r($sem);
祝你好运..['}
这段代码对我来说很好用:
// 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
所以结果是
Array
(
[0] =>
[1] => 2nd
[2] => 4th
[3] => 6th
[4] => 8th
[5] => SE1
[6] => SE3
[7] => SE5
[8] => SE7
)
顺便说一句,您可以使用 $doc['#semester > option']
而不是 pq('#semester > option')
,两种变体都可以正常工作。如果你需要省略一些 option
- 你会根据 option
属性制作过滤器,比如 if ($opt->getAttribute('value') != "")
.
此代码应该有效。使用目标 "#semester option"
而不是 "#semester"
.
$semesters = $all['#semester option'];
foreach ($semesters as $semester)
{
echo pq($semester)->text();
echo '<br> newline';
}
//HTML//
<select name="semester" id="semester" class="inputtxt" onChange="javascript:selectSemester(this, this.form);">
<option value="">-- Select your Semester --</option>
<option value="2nd" >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>
//PHP//
$select = $_POST['semester'];
$count = count($select);
$i = 0;
while($i =< $count)
{
$i++;
echo $_POST['semester'][$i]
}
我需要使用 PHPQuery 根据下拉列表的 id
获取数组中下拉列表的所有值。
以下是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>
我试过这个:
$semesters = $all['#semester'];
foreach ($semesters as $semester) {
echo pq($semester)->text();
echo '<br>';
}
但我只得到一个输出,所有值都串联在一起。如何将每个值作为数组中的单独元素获取?
重复发明轮子之前的小技巧,使用simple_html_dom,你可以在http://sourceforge.net/projects/simplehtmldom/中找到它这个class在过去非常有用,你甚至可以修改它来将它与 CURL 或包含 HTML 代码的字符串一起使用。
您将能够搜索对象(标签)或 ID 并获取标签的内容,或者以更友好的方式进行迭代。
很简单,您需要 select selector with id 并使用标签对其进行迭代,创建一个空数组并使用 foreach 迭代器将值存储在其中。
$semsterr = array(); //empty Array
//use the option tag for iteration
foreach (pq('select#semester option') as $opt) {
$semsterr[] = pq($opt) -> text();
// $semsterr[] = pq($opt) -> attr('value'); in case you need the value
}
print_r($semsterr); // check if the array has the values stored
您必须在添加数组之前检查该值。 喜欢...
$sem = array();
foreach (pq('#semester option') as $opt) {
if(pq($opt) -> val() != '')
{
$sem[] = pq($opt) -> text();
}
}
print_r($sem);
祝你好运..['}
这段代码对我来说很好用:
// 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
所以结果是
Array
(
[0] =>
[1] => 2nd
[2] => 4th
[3] => 6th
[4] => 8th
[5] => SE1
[6] => SE3
[7] => SE5
[8] => SE7
)
顺便说一句,您可以使用 $doc['#semester > option']
而不是 pq('#semester > option')
,两种变体都可以正常工作。如果你需要省略一些 option
- 你会根据 option
属性制作过滤器,比如 if ($opt->getAttribute('value') != "")
.
此代码应该有效。使用目标 "#semester option"
而不是 "#semester"
.
$semesters = $all['#semester option'];
foreach ($semesters as $semester)
{
echo pq($semester)->text();
echo '<br> newline';
}
//HTML//
<select name="semester" id="semester" class="inputtxt" onChange="javascript:selectSemester(this, this.form);">
<option value="">-- Select your Semester --</option>
<option value="2nd" >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>
//PHP//
$select = $_POST['semester'];
$count = count($select);
$i = 0;
while($i =< $count)
{
$i++;
echo $_POST['semester'][$i]
}