如何使用PHP获取HTML元素?

时间:2016-03-10 13:47:07

标签: php html smarty

我正在尝试使用HTML获取页面的PHP。我看到这可以使用DOM来浏览HTML文件的元素,但我使用Smarty创建我的HTML,所以我不知道这是否是我被困在这里的原因

我希望得到的HTML是<span>内的form标记。我想要<span>标记,而不是该范围的值(如果您获得<span>标记,我认为这将被检索。)

在SO上搜索我发现this post这是我用来制作代码的参考资料。

这是我的HTML代码段(没有标题来简化它):

<div id="content">
    <br>
    <h2>Register</h2>
    <form action="http://localhost/login" method="post">
        User
        <input type="text" name="user"><span id = "userRegistered" style = "color:red; margin-left: 10px; display: none"> User already registered </span><br>
        Password
        <input type="password" name="password"><br>
        <input type="submit" value="Submit">
    </form>
 </div>

以及我在PHP中尝试的内容:

$html = "../template/login.tpl"; //I have the php file in a folder and the template in another folder in the same directory. It is the reason I put ../
$doc = new DOMDocument();
$doc->loadHTMLFile($html);

$items = $doc->getElementsByTagName("span");

foreach ($items as $item) {
    var_dump($item);
}

我正在使用var_dump($item),因为我想知道它给了我多少跨度(当然,看到它给我正确的输出后我将使用该输出)。它应该给我一个,但它不会给我任何东西。

我不想使用Javascript或插件来获取它。我只想知道是否有可能只用PHP来做这件事。

我想要实现的目标

css代码的<span>属性从display:none更改为display:initial。我想要做的是获取<span>标签并在更改其css后,但首先我需要获得该范围。

我需要使用PHP更改css的原因

我需要这个范围一直隐藏所以我直接放置display:none但是我需要这样,在用PHP检查用户是否已经存在的条件之后,如果用户已经注册了,此跨度将显示。到目前为止,我只是在做这个条件之前尝试改变css,因为首先我想知道是否有可能得到它。

提前致谢!

1 个答案:

答案 0 :(得分:1)

最后,感谢@Fiskie和@deceze以正确的方式指出我,我把它弄明白了。这是我的代码:

在我的PHP方面:

if(some condition here)
{
   $this->$smarty->assign('found', 'initial');
   $this->$smarty->display('login.tpl');
}
else
{
   $this->$smarty->assign('found', 'none');
   $this->$smarty->display('login.tpl');
}

在我的HTML方面:

<div id="content">
    <br>
    <h2>Register</h2>
    <form action="http://localhost/login" method="post">
        User
        <input type="text" name="user">
        <span id = "userRegistered" style = "color:red; margin-left: 10px; display: {$found}"> User already registered </span><br>
        Password
        <input type="password" name="password"><br>
        <input type="submit" value="Submit">
    </form>
 </div>