网页中的PHP_curl帖子字段

网页中的PHP_curl帖子字段,php,post,Php,Post,我是网络编程新手,不知道如何着手解决这个小问题 在下面的网页上有一个“post”表格可供搜索。我可以看到下面的name=value对存在“search=university”(仅举个例子),但当我尝试使用phpcurl进行此操作时,它似乎不起作用。这是我的简单代码 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://wokinfo.com/cgi-bin/dci/search.cgi"); curl_setopt($ch, CUR

我是网络编程新手,不知道如何着手解决这个小问题

在下面的网页上有一个“post”表格可供搜索。我可以看到下面的name=value对存在“search=university”(仅举个例子),但当我尝试使用phpcurl进行此操作时,它似乎不起作用。这是我的简单代码

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "http://wokinfo.com/cgi-bin/dci/search.cgi");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,
        "search=university");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec($ch);
print curl_getinfo($ch, CURLINFO_HTTP_CODE) . "<br>";
print $output . "\n";
curl_close($ch);
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,”http://wokinfo.com/cgi-bin/dci/search.cgi");
卷曲设置($ch,卷曲设置桩,1);
curl_setopt($ch,CURLOPT_POSTFIELDS,
“搜索=大学”);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
$output=curl\u exec($ch);
打印curl\u getinfo($ch,CURLINFO\u HTTP\u代码)。“
”; 打印$output。“\n”; 卷曲关闭($ch);

我做错了什么?

您需要将的值设置为如下数组:

curl_setopt($ch, CURLOPT_POSTFIELDS, array("search" => "university"));
虽然文档说明可以将参数作为字符串添加,但这看起来总是很混乱,容易出错。传递数组更干净。在您的代码中:

// Set the `post` fields.
$post_fields = array();
$post_fields['search'] = 'university';
$post_fields['searchtype'] = 'and';
$post_fields['client'] = 'default';
$post_fields['output'] = 'xml_no_dtd';
$post_fields['proxystylesheet'] = 'default';

// Core curl logic.
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://wokinfo.com/cgi-bin/dci/search.cgi");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec($ch);
print curl_getinfo($ch, CURLINFO_HTTP_CODE) . "<br>";
print $output . "\n";
curl_close($ch);
//设置'post'字段。
$post_fields=array();
$post_字段['search']='university';
$post_字段['searchtype']='和';
$post_字段['client']='default';
$post_字段['output']='xml_no_dtd';
$post_字段['proxystylesheet']='default';
//核心卷曲逻辑。
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,”http://wokinfo.com/cgi-bin/dci/search.cgi");
curl_setopt($ch,CURLOPT_POST,true);
curl_setopt($ch,CURLOPT_POSTFIELDS,$post_fields);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
$output=curl\u exec($ch);
打印curl\u getinfo($ch,CURLINFO\u HTTP\u代码)。“
”; 打印$output。“\n”; 卷曲关闭($ch);
您忘记发送searchtype参数:

curl_setopt($ch, CURLOPT_POSTFIELDS, "search=university&searchtype=and");

php代码似乎返回“不匹配您的查询”,而当我手动执行此操作时,可以看到76个returnsstill不匹配您的查询query@user3618663现在试试看。添加了更多表单参数。“此参数可以作为urlencoded字符串(如“para1=val1¶2=val2&…”)传递,也可以作为数组传递,字段名作为键,字段数据作为值。”-Docs@user3618663不客气!我还将其设置为使
post
字段更易于阅读、添加和编辑。@JakeGould。我可以问你另一个问题吗?如果你看到这个脚本的回复,你会在网页上看到一个条目,上面写着“匹配的代码数:75”。这实际上包含在段落标记中。I phpDOM允许用户在页面存在某种结构时执行此操作。