使用PHP检索textarea的值

Bae*_*ehr 3 php file-get-contents

有谁可能知道如何使用PHP获取HTML文档中特定元素的值?我现在正在做的是使用file_get_contents从另一个网站提取HTML代码,并在该网站上有一个textarea:

<textarea id="body" name="body" rows="12" cols="75" tabindex="1">Hello World!</textarea>
Run Code Online (Sandbox Code Playgroud)

我想做的就是让我的脚本完成,file_get_contents然后拔出"Hello World!" 来自textarea.那可能吗?很抱歉打扰你们,再次,你们给出了一些有用的建议:].

Tat*_*nen 7

不要抱怨我们,这是一个很好的问题,我很乐意回答.您可以使用PHP Simple HTML DOM Parser来获得所需内容:

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

echo $contents; // Outputs 'Hello World!'
Run Code Online (Sandbox Code Playgroud)

如果你想使用file_get_contents(),你可以这样做:

$raw_html = file_get_contents('http://www.domain.com/');
$html     = str_get_html($raw_html);
...
Run Code Online (Sandbox Code Playgroud)

虽然我没有看到任何需要,file_get_contents()因为您可以使用该outertext方法获取原始的完整HTML,如果您需要它在某处:

$html     = file_get_html('http://www.domain.com/');
$raw_html = $html->outertext;
Run Code Online (Sandbox Code Playgroud)

只是为了踢,你也可以使用单行正则表达式:

preg_match('~<textarea id="body".*?>(.*?)</textarea>~', file_get_contents('http://www.domain.com/'), $matches);
echo $matches[1][0]; // Outputs 'Hello World!'
Run Code Online (Sandbox Code Playgroud)

我强烈建议不要这样做,因为你更容易受到代码更改的影响,这可能会破坏这个正则表达式.