无法使用DOM从textarea获取值

时间:2011-12-09 18:45:37

标签: php dom

我使用CURL来获取表单并将其存储在字段

..,
$str = curl_exec($ch);

$ str HTML有一个textarea如下

<td class="fntc">
Description
</td>
<td class="ffc">
<textarea name="descri" rows="6" class="emf" maxlength="128000">fictional.</textarea>
</td>
</tr>

现在我正在尝试使用dom来获取此区域并且不成功

$dom = new DOMDocument;
$dom->loadHTML($str);

// Get all the textarea field nodes
$inputs = $dom->getElementsByTagName('textarea');
// Iterate over the input fields and save the values we want to an array
foreach ($inputs as $input) {
    $name = $input->getAttribute('name');
    $val = $input->getAttribute('value');
    $field_vals[$name] = $val;
}

但是我无法得到这个价值。我在这里做错了吗?

1 个答案:

答案 0 :(得分:5)

由于<textarea>包含标记内的文字,而不是value属性,因此您可以使用nodeValue访问该文字:

$val = $input->nodeValue;

更新

好的,我现在已经验证了这一点:

$d = new DOMDocument();
$d->loadHTML("<html><head></head><body><textarea>textarea contents</textarea></body></html>");
$t = $d->getElementsByTagName("textarea");
foreach ($t as $tx) {
  echo $tx->nodeValue;
}

// Prints
// textarea contents