如何使用 PHP 获取 HTML 个元素?

How can I get HTML elements with PHP?

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

我想从我的 HTML 中得到的是 form 中的 <span> 标签。我想要 <span> 标签,而不是那个跨度的值(我想如果你得到 <span> 标签就会被检索到)。

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

这是我的 HTML 片段(没有 headers 来简化它):

<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.

我想达到的目标

将我的 <span> 标签的 css 属性 从 display:none 更改为 display:initial。我想要做的是获取 <span> 标签并在更改其 css 之后,但首先我需要获取该跨度。

我需要使用 PHP

更改 css 的原因

我需要一直隐藏这个跨度,所以我直接输入 display:none 但我需要,在 PHP 中检查用户是否已经存在的条件之后,如果已经注册的用户,将显示此跨度。到目前为止,我只是想在执行条件之前更改 css 因为首先我想看看是否有可能得到它。

提前致谢!

最后,感谢@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>