查找并存储div的所有innerhtml到php变量

时间:2014-01-28 00:03:12

标签: php innerhtml

我正在尝试将div的内容存储到变量中。

示例:

  <div class="anything">
    <p>We don't know the content of this div</p>
    </div>

我想搜索<div class="anything">并将所有内容存储在开始和结束标记之间。

我们还希望避免使用绝对路径名,以便它只搜索当前HTML / PHP文件中存在代码的div

PHP可以实现这一点,还是仅适用于JavaScript?

3 个答案:

答案 0 :(得分:2)

PHP并不那么聪明。他甚至都不知道他说的是什么。

PHP是server-side language。它绝对没有任何关于DOM(即浏览器窗口中显示的内容)在何时传递页面的线索。是的,我知道,PHP 呈现 DOM,所以它怎么可能不知道那里有什么?

简单地说,让我们说 PHP没有他所呈现的内容。他只知道在一个特定时刻,他正在传递一系列角色,但就是这样。他有点没有全局了解。大局是客户端,称为DOM。服务器(PHP)在渲染时会立即忘记它。

像红鱼一样。

I'm PHP the red fish

为此,您需要JavaScript(在客户端的计算机上,因此可以完全访问呈现的DOM),或者如果您希望PHP执行此操作,则必须检索完整呈现的页面首先。

因此,在PHP中执行您想要执行的操作的唯一方法是打印页面,然后您才能使用http请求检索它,并在您的情况下使用{{3}等库进行解析}}

关于如何使用simpleHtmlDom解析呈现页面的快速示例:

假设您知道您的网页将在simpleHtmlDom

上显示
$html = file_get_html('http://mypage.com/mypage.php');

foreach($html->find('div.anything') as $element) 
    echo $element->src . '<br>';

答案 1 :(得分:-1)

您可能需要这些组合。

在您的Javascript中:

var content = document.getElementsByClassName("anything")[0].innerHTML();
document.getElementByID('formfield').value(content);
document.getElementByID('hiddenForm').submit();

在您的HTML / PHP文件中:

<form id="hiddenForm" action="path/to/your/script">
<input type="hidden" name="formfield" value="" />
</form>

在表单操作中定义的脚本中:

if(!empty($_POST)){
    $content = $_POST['formfield'];
    // DO something with the content;
}

或者你可以通过AJAX发送数据,但我想你是这些东西的新手,所以你应该慢慢开始:)

干杯! 史蒂夫

答案 2 :(得分:-1)

您可以使用JS从所需的元素中获取.innerHTML并将其存储在表单的某些输入字段的.value中,然后正常使用提交按钮运行PHP表单处理。使用.readOnly取消输入字段的编辑。