在PHP中返回textarea的值

时间:2014-03-07 21:42:35

标签: php mysql

我正在使用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 . "&nbsp;" . $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 . "&nbsp;" . $row->value . "</br>";
    }
}

3 个答案:

答案 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 . "&nbsp;" . $row->plaintext . "</br>";
        $numtexts = $numtexts + 1;
    }
}

这是一种有限的数据形式,具有可预测的输入和textareas。正如我之前所说,输入和textarea名称对应于MySQL表列,因此很容易映射返回的值。我在Sourceforge的简单dom手册中找到了对我有用的答案。

答案 2 :(得分:0)

你可能想要:

$html->find('textarea', 0)->text();