我需要根据id使用PHPQuery的下拉列表获取数组中下拉列表的所有值.
以下是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>
Run Code Online (Sandbox Code Playgroud)
我试过这个:
$semesters = $all['#semester'];
foreach ($semesters as $semester) {
echo pq($semester)->text();
echo '<br>';
}
Run Code Online (Sandbox Code Playgroud)
但是我只得到一个输出,并且所有值都连接在一起.如何将每个值作为数组中的单独元素?
我正在使用phpquery从网页中提取一些数据.我需要识别页面的菜单.我的实现是找到sibilings> 0且last-child为的每个元素"a".我的代码是:
foreach($this->doc['*'] as $tagObj){
$tag = pq($tagObj);
if(count($tag->siblings()) > 0){
if($tag->find(":last-child")->tagName === "a")
echo trim(strip_tags($tag->html())) . "<br/>";
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我没有得到任何输出因为
$标签 - >找到( ":最后的孩子") - >标签名
哪个没有返回任何东西.这是什么原因?
我正在寻找一个PHP库,它允许我废弃网页并关注所有cookie并使用默认值预填充表单,这就是让我烦恼最多的东西.
我已经厌倦了必须将每个输入元素与xpath匹配,如果存在更好的东西,我会很高兴.我遇到过phpQuery,但手册不太清楚,我无法找到如何发出POST请求.
有人能帮我吗?谢谢.
@Jonathan Fingland:
在browserGet()手册提供的示例中,我们有:
require_once('phpQuery/phpQuery.php');
phpQuery::browserGet('http://google.com/', 'success1');
function success1($browser)
{
$browser->WebBrowser('success2')
->find('input[name=q]')->val('search phrase')
->parents('form')
->submit();
}
function success2($browser)
{
echo $browser;
}
Run Code Online (Sandbox Code Playgroud)
我想所有其他字段都被废弃并在GET请求中发回,我想用phpQuery :: browserPost()方法做同样的事情,但我不知道该怎么做.我试图刮的形式有一个输入令牌,我很乐意,如果phpQuery足够聪明,可以刮掉令牌,让我更改其他字段(在这种情况下是用户名和密码),通过POST提交一切.
PS:请放心,这不会用于垃圾邮件.
有没有办法通过phpquery :: newDocument运行这个html标记后修复显示不正确的字符?在使用phpquery创建新文档后,原始文档中的-Classics和现代Woman之间会出现双引号.
//Original document is UTF-8 encoded
$raw_html = '<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /></head><body><p>Mr. Smith of Bangkok celebrated the “Classics with modern Woman”.</p></body></html>';
print($raw_html);
$aNew_document = phpQuery::newDocument($raw_html);
print($aNew_document);
Run Code Online (Sandbox Code Playgroud)
原始输出:曼谷史密斯先生庆祝"与现代女性的经典".
新文件输出:曼谷史密斯先生与现代女性一起庆祝"经典".
我正在尝试使用PHPQuery的WebBrowser插件登录网站.我能够成功登录,但我不确定如何重复使用之前调用的cookie到下一个.
$client = phpQuery::browserGet('https://website.com/login', 'success1');
function success1($browser) {
$handle = $browser
->WebBrowser('success2');
$handle
->find('input[name=name]')
->val('username');
$handle
->find('input[name=pass]')
->val('password')
->parents('form')
->submit();
}
function success2($browser) {
print $browser; // prints page showing I'm logged in
// make authenticated requests here
}
Run Code Online (Sandbox Code Playgroud)
如何使用会话/登录cookie发出其他请求?
Update1:使用完整的源代码:
$html1 = '<div class="pubanunciomrec" style="background:#FFFFFF;"><script type="text/javascript"><!--
google_ad_slot = "9853257829";
google_ad_width = 300;
google_ad_height = 250;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>';
$doc = phpQuery::newDocument($html1);
$html1 = $doc->remove('script');
echo $html1;
Run Code Online (Sandbox Code Playgroud)
源代码就是上面这个.我还读到存在一个错误,http://code.google.com/p/phpquery/issues/detail?id = 150我不知道它是否已经解决.
有关如何从此HTML中删除< script >的任何线索?
最好的祝福,
嗨,
我需要使用PhpQuery从HTML文档中删除所有< script >标记.
我做了以下事情:
$doc = phpQuery::newDocument($html);
$html = $doc['script']->remove();
echo $html;
Run Code Online (Sandbox Code Playgroud)
它不会删除< script >标记和内容.使用PhpQuery可以做到这一点吗?
最好的祝福,
phpQuery是一个非常好的工具,它在过去解析了格式良好的XHTML和XML文档时帮助了我,但是我最近遇到了一个问题,试图选择在其标记名中有冒号的元素,如下所示:
<isc:thumb><![CDATA[http://example.com/foo_thumb.jpg]]></isc:thumb>
Run Code Online (Sandbox Code Playgroud)
我试图使用该pq()函数来选择所有这些元素:
foreach ( pq("isc:thumb") as $thumbnail ) {
print pq( $thumbnail )->text();
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,这无济于事.如果我尝试另一个元素,比如标记名id,则结果会按预期弹出.
我是phpQuery的新手.我需要完成获取网页HTML TITLE标记内容的简单任务.在这种情况下,我试图获得"雅虎"的标题内容 应该是"雅虎".
我正在用phpQuery做这个,但它现在正在工作
// Testing phpQuery
$result = phpQuery::newDocumentFile($scraps['Scrap_yahoo']->getPage('http://www.yahoo.com','','off'))
->find('title');
echo $result->text();
Run Code Online (Sandbox Code Playgroud)
有人能给我一个如何实现这一目标的线索吗?
最好的祝福,
从以下代码:
<ol>
<li>Coffee</li>
<li>Tea</li>
<li>Milk</li>
</ol>
Run Code Online (Sandbox Code Playgroud)
如何使用phpQuery创建数组
array(
'Coffee',
'Tea',
'Milk'
);
Run Code Online (Sandbox Code Playgroud)
这是我的第一次尝试,非常难看
$doc = phpQuery::newDocumentHTML(...);
$img = $doc->find('ol');
$list = array();
function attrsrc($i, $v){
global $list;
$list[] = phpQuery::pq($v)->text();
}
phpQuery::each($img, 'attrsrc', new CallbackParam, new CallbackParam);
print_r($list);
Run Code Online (Sandbox Code Playgroud) 我使用phpQuery从元素中获取数据.
我试图从第一个td,第二个td和href每个链接获取值tr.
<table>
<tr class="A2">
<td> Text 1 </td>
<td> Text 2 </td>
<td> Text 3 </td>
<td> <a href="linkhere1"> Text 131</a> </td>
</tr>
<tr class="A2">
<td> Text 4 </td>
<td> Text 5 </td>
<td> Text 6 </td>
<td> <a href="linkhere2"> Text 123213</a> </td>
</tr>
<tr class="A2">
<td> Text 7 </td>
<td> Text 8 </td>
<td> Text 9 </td>
<td> <a href="linkhere3.php"> Text 213213 </a> </td>
</tr>
</table>
Run Code Online (Sandbox Code Playgroud)
这该怎么做?我试过了:
<?
require('phpQuery.php');
$file …Run Code Online (Sandbox Code Playgroud)