我正在使用Simple HTML DOM从数据表单中删除。我对返回感兴趣的是输入和textareas,名称和值。名称对应于MySQL表中的列。除了我无法获得textareas的回报价值之外,它主要是按照广告宣传的。我在这个网站和其他网站上搜索过,我找到最接近解决方案的是[1]:Retrieve value of a textarea with PHP。
我发现我必须通过两次“$ html-> load($ result [”body“])”来获取输入和textareas的名称和值。当我试图在每个传递中包含每个时,该函数获取所有输入,但忽略了textareas。所以我添加了第二个传递来拾取textareas,它确实返回textarea名称,但没有返回值。我可以在页面源和调试器中看到值。实际上,defaultValue,innerHTML,textContent和value中的任何一个都显示相同的输出。代替“textarea [value]”我尝试了所有上述属性。没有错误,只是没有。
以下是代码段:
$url = "some url";
$web = new WebBrowser();
$result = $web->Process($url);
if (!$result["success"]) echo "Error retrieving URL. " . $result["error"] . "\n";
else if ($result["response"]["code"] != 200) echo "Error retrieving URL. Server returned: " . $result["response"]["code"] . " " . $result["response"]["meaning"] . "\n";
else
{
echo "Order inputs: </br>";
$html->load($result["body"]);
$rows = $html->find("input[name]");
$rows = $rows + $html->find("input[value]");
foreach ($rows as $row)
{
echo "\t" . $row->name . " " . $row->value . "</br>";
}
}
unset($html);
unset($result);
unset($rows);
$html = new simple_html_dom();
echo "</br></br>";
$result = $web->Process($url);
if (!$result["success"]) echo "Error retrieving URL. " . $result["error"] . "\n";
else if ($result["response"]["code"] != 200) echo "Error retrieving URL. Server returned: " . $result["response"]["code"] . " " . $result["response"]["meaning"] . "\n";
else
{
echo "Order textarea(s): </br>";
$html->load($result["body"]);
$rows = $html->find("textarea[name]");
$rows = $rows + $html->find("textarea[value]");
foreach ($rows as $row)
{
echo "\t" . $row->name . " " . $row->value . "</br>";
}
}
答案 0 :(得分:1)
textarea没有值。它包含内容(开始标记和结束标记之间的内容),而不是value
属性。
答案 1 :(得分:1)
答案是&#34;明文&#34;
$result = $web->Process($url);
if (!$result["success"]) echo "Error retrieving URL. " . $result["error"] . "\n";
else if ($result["response"]["code"] != 200) echo "Error retrieving URL. Server returned: " . $result["response"]["code"] . " " . $result["response"]["meaning"] . "\n";
else
{
echo "Order textarea(s): </br>";
$html->load($result["body"]);
$rows = $html->find("textarea[name]");
$rows = $rows + $html->find("textarea[plaintext]");
$numtexts = 0;
foreach ($rows as $row)
{
echo "\t" . $row->name . " " . $row->plaintext . "</br>";
$numtexts = $numtexts + 1;
}
}
这是一种有限的数据形式,具有可预测的输入和textareas。正如我之前所说,输入和textarea名称对应于MySQL表列,因此很容易映射返回的值。我在Sourceforge的简单dom手册中找到了对我有用的答案。
答案 2 :(得分:0)
你可能想要:
$html->find('textarea', 0)->text();