【问题标题】:Add a span tag to Title without javascript在没有 javascript 的情况下将 span 标签添加到 Title
【发布时间】:2012-03-10 23:05:00
【问题描述】:

更新: 是的,我在我的页面中使用 PHP。

你好朋友我在想.....有没有办法在不使用javascript的情况下将<span>标签添加到标题中?

可能正在使用 Regex 或 php 或其他方法。我真的不知道。

让我解释一下....

我的 HTML 是这样的:

<h3 class="title">The Title Goes Here</h3>

我想要的是自动添加一个span标签,所以最终的HTML看起来像这样。

<h3 class="title"><span>The </span>Title Goes Here</h3>

我想在&lt;span&gt; 标记中只包装标题的第一个单词

我知道这很容易不使用 Javascript,但我正在寻找非 javascript 解决方案。

请帮忙!

【问题讨论】:

  • 您没有给出任何上下文指示。 HTML 页面是由 PHP 生成的、通过 Web 服务器从磁盘上提供的,还是只是从与 Web 浏览器相同的计算机上的文件加载?
  • 你的 HTML 是 PHP 生成的吗?那么调整这个过程应该相当容易。如果它是一个静态文件,那么只需编辑它。
  • @James Aylett 是的,我在我的页面中使用 PHP。
  • @Felix Kling 是的,我在我的页面中使用 PHP。
  • 那么您应该提供更多信息。 &lt;h3 class="title"&gt;The Title Goes Here&lt;/h3&gt;是如何生成的?

标签: php html regex tags


【解决方案1】:

如果您不想使用 javascript DOM,您可以在 PHP 中使用 DOMDocument 来执行此操作:

$html = '<h3 class="title">The Title Goes Here</h3>';
$doc = new DOMDocument();
$doc->loadHTML($html);
$xp = new DOMXPath($doc);
foreach($xp->query('//h3[@class="title"]') as $parent) {
    $title = $parent->nodeValue;
    list($first, $rest) = explode(' ', $title, 2);
    $span = new DOMElement('span', $first. ' ');
    $parent->nodeValue = $rest;
    $parent->insertBefore($span, $parent->firstChild);
}
foreach($doc->getElementsByTagName('body')->item(0)->childNodes as $node)
{
    echo $doc->saveHTML($node);
}

【讨论】:

  • 嗨@hakre 感谢您的帮助。您能否更详细地解释一下我如何为多个标题执行此操作?是的,我在我的页面中使用 php。
  • 代码示例确实适用于每个带有class="title"&lt;h3&gt; 标记。对于 0,一个或多个。
【解决方案2】:

我的回答是无法做到。如果没有 JavaScript,您将无法在浏览器中操作页面。这只能通过手动编辑服务器上的页面来实现,或者使用PHP逻辑动态生成它,或者等效的解决方案,其中有很多。

如果您要为仅在单个公司标准浏览器上使用的公司解决方案执行此操作,则可以考虑为浏览器构建插件。

【讨论】:

    猜你喜欢
    • 2019-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多