【发布时间】:2014-03-07 21:42:34
【问题描述】:
我正在使用简单的 HTML DOM 从数据表单中删除。我感兴趣的只是输入和文本区域、名称和值。这些名称对应于 MySQL 表中的列。除了我无法在 textareas 上获得返回值外,它大部分都像宣传的那样工作。我在这个网站和其他网站上进行了搜索,我发现最接近解决方案的是 [1]:Retrieve value of a textarea with PHP。
我发现我必须通过两次“$html->load($result["body"])”来获取输入和文本区域的名称和值。当我尝试将每一个都包含在一个传递中时,该函数拾取了所有输入,但忽略了文本区域。所以我添加了第二遍来获取 textarea,它确实返回了 textarea 名称,但没有返回任何值。我可以在页面源代码和调试器中看到值。事实上,defaultValue、innerHTML、textContent 和 value 中的任何一个都显示相同的输出。代替“textarea [value]”,我已经尝试了上述所有属性。没有错误,什么都没有。
这是一个代码sn-p:
$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>";
}
}
【问题讨论】:
-
试过了:“注意:尝试获取非对象的属性...”
-
所以发布您尝试过的内容。显然,您不会完全使用该答案中的内容,因为它包含对您很可能没有使用的元素类的引用。
-
好的。代替“textarea[value]”,替换为“textarea[innerHTML]”或“textarea[textContent]”。我不是已经说过了吗?我刚刚尝试了“textarea [content]”,它返回内容、文本框和所有内容。