从不同的页面DomDocument获取div内容

时间:2015-01-10 19:56:02

标签: php html

我在使用DomDocument方面遇到了一些问题。 我想从test.php获取div中的内容并将其放入test2.php中的表单值中,我收到此错误

  

DOMDocument :: loadHTML():在实体

中解析属性名称时出错

test.php的

<?php 
    include_once "connect_db.php";
    $sql = "SELECT * FROM client";
    $result = mysqli_query($conn, $sql);

    if (mysqli_num_rows($result) > 0) {
        // output data of each row
        while($row = mysqli_fetch_assoc($result)) {
        echo "<div id='drag' class='block' value='". $row["custNo"]."';>";
        echo "<div id='custNo'>Client ID: " . $row["custNo"]. "</div>";
        echo "</div>";
       }
    } else {
            echo "0 results";
            }
   mysqli_close($conn);
?>

test2.php

<form class="form" action="#" id="siteVisitForm" method="post">
        <h3>Site Visit Date</h3>
        <label>Client ID: <span>*</span></label>
            <input type="text" id="clientID" name="clientID" value="<?php                                                                           
                                                                        $doc = new DomDocument;
                                                                        $doc->validateOnParse = true;
                                                                        $doc->loadHtml(file_get_contents('hello.php'));
                                                                        var_dump($doc->getElementById('custNo'));?>"/>
        <label>Visit date: <span>*</span></label>
            <input type="text" id="visitDate" name="visitDate"/>
        <label>Comment:</label>
            <textarea id="custComment" name="custComment" placeholder="comment......."></textarea>
        <input type="submit" id="send" value="Send" name="submit"/>
        <input type="button" id="cancel" value="Cancel"/>
</form>

我可以知道如何去做吗?

1 个答案:

答案 0 :(得分:0)

这是将目标文件的内容放入第二种方法的一种方法,假设目标文件是hello.php,并且该文件与test2.php存在于使用HTTP协议的同一域中。如果您在访问文件时忽略指示协议,那么您将成功仅检索需要解析的PHP,即echo 'hello!';。以URL格式访问目标文件的技术如下:

file:hello.php

<?php

 echo 'hello!';

?>

file:test2.php

$doc = new DomDocument;
$url = 'http://www.example.com/hello.php';
$contents = file_get_contents( $url );
$doc->loadHtml( $contents );
echo $doc->saveHTML(); // hello!

在此解决方案中,hello.php的内容将自动返回为HTML,这与PHP使用HTTP协议的方式相同。因此,$ contents可以很容易地传递给loadHTML方法。

注意:这种技术仅适用于文件来自同一域的情况,尽管它可能会影响Web服务器的性能。如果它们来自不同的域,除非您是两者的所有者,否则该技术是不可取的,以避免安全问题。为了更加安全,可以将file_get_contents()的结果传递给htmlentities()以避免潜在的XSS问题。