用PHP检索textarea的值

用PHP检索textarea的值,php,file-get-contents,Php,File Get Contents,有人知道如何使用PHP获取HTML文档中特定元素的值吗?我现在正在做的是使用file\u get\u contents从另一个网站调出HTML代码,该网站上有一个文本区域: <textarea id="body" name="body" rows="12" cols="75" tabindex="1">Hello World!</textarea> 你好,世界! 我想做的是让我的脚本执行文件\u get\u contents,然后从文本区域拉出“Hello World

有人知道如何使用PHP获取HTML文档中特定元素的值吗?我现在正在做的是使用
file\u get\u contents
从另一个网站调出HTML代码,该网站上有一个文本区域:

<textarea id="body" name="body" rows="12" cols="75" tabindex="1">Hello World!</textarea>
你好,世界!

我想做的是让我的脚本执行
文件\u get\u contents
,然后从文本区域拉出“Hello World!”。可能吗?很抱歉打扰了你们,再一次,你们给了我们很多有用的建议。

不要为打扰我们感到抱歉,这是一个很好的问题,我很乐意回答。您可以使用来获得所需的:

$html     = file_get_html('http://www.domain.com/');
$textarea = $html->find('textarea[id=body]'); 
$contents = $textarea->innertext;

echo $contents; // Outputs 'Hello World!'
如果要使用
文件获取内容()
,可以这样做:

$raw_html = file_get_contents('http://www.domain.com/');
$html     = str_get_html($raw_html);
...
尽管我不认为有任何必要使用
文件\u get\u contents()
,因为如果您在某个地方需要它,您可以使用
outertext
方法获取原始的完整HTML:

$html     = file_get_html('http://www.domain.com/');
$raw_html = $html->outertext;

仅对于kicks,您还可以使用一行正则表达式执行此操作:

preg_match('~<textarea id="body".*?>(.*?)</textarea>~', file_get_contents('http://www.domain.com/'), $matches);
echo $matches[1][0]; // Outputs 'Hello World!'
preg\u match(“~(.*?”),file\u get\u contents('http://www.domain.com/","元",;
echo$匹配项[1][0];//输出“你好,世界!”
我强烈建议不要这样做,因为您更容易受到可能破坏此正则表达式的代码更改的影响。

我建议使用PHPs类

$dom = DOMDocument::loadHTMLFile( $url );
$xpath = new DOMXPath( $dom );
$nodes = $xpath->query('//textarea[id=body]' )

$result = array();
for( $nodes as $node ) {
    $result[] = $node->textContent;
}

那里,
$result
将包含每个id为body的textarea的值。

我建议使用正则表达式,但我怀疑我会因为它而被喊下来=)这么多好的答案!非常感谢大家,你们帮了我很大的忙。当我使用这段代码时,我得到了一个错误:警告:DOMDocument::loadHTMLFile()[DOMDocument.loadHTMLFile]:意外的结束标记:input是否有解决方法?听起来像是你试图解析的HTML被破坏了,这是一个常见的噩梦。您应该使用Tatu的regexp解决方案,或者加入到混合中。PCRE for Dom通常不是最好的解决方案。我没有得到任何输出,可能是文本框的内容吗?(它们不是空白的)