【问题标题】:Find First Instance of String Inside of An Element and Add a Tag Around It在元素内查找字符串的第一个实例并在其周围添加标签
【发布时间】:2013-07-27 11:45:06
【问题描述】:

我可以编写什么 PHP 或 jQuery 来自动在元素(通常是 <p> 标签)内找到短语的第一个实例(例如“每日文摘”),并自动在文本周围添加一个带有类的跨度我的选择?

换句话说,我希望页面上任何元素内的短语“每日文摘”的第一个实例以红色突出显示,而用户不必自己在文本周围添加一个跨度(因为人们使用该网站是代码文盲)。如果该短语在 div 或其他元素中多次使用,我只想突出显示第一个实例。

【问题讨论】:

  • PHP 不会那样操作现有的 DOM。您需要研究 Javascript 和 jQuery。有了 jQuery,就很简单了。
  • 你能显示你的代码吗?
  • 你可以使用PHP DOM或者简单的preg_replace
  • @DevlshOne 我编辑了问题以包含 jQuery。你怎么看?

标签: php jquery wordpress replace


【解决方案1】:

试试这个:

$content = preg_replace('/'.$word.'/i', '<span class="red">$0</span>', $content);

在 preg_replace 上查看更多信息。

代码测试。它有效。

【讨论】:

  • $0 替换所有匹配的模式,并且仅首先替换 $1。在这种情况下,它们是相同的,因为它只有一种模式。
  • 我很确定这行不通,你试过了吗?没有捕获组,因此$1 不可用。
  • 没有。为此,您将需要 jquery 实现。
【解决方案2】:
    $(body).filter(function() {
        return $("p", this).text() == "Daily Digest";
    }).wrapAll("<span class='myClass'></span>");

注意 - 这将找到&lt;p&gt;Daily Digest&lt;/p&gt; 的所有实例,并将它们转换为&lt;span class='myClass'&gt;&lt;p&gt;Daily Digest&lt;/p&gt;&lt;/span&gt;。我会让你弄清楚如何只在某个元素中的第一个实例上执行此操作。

【讨论】:

    【解决方案3】:

    检查一下

    $testwords= preg_replace('/'.$contents.'/i', '<span class="sample">Sample Content</span>', $testwords);
    

    参考http://in1.php.net/preg_replace

    【讨论】:

      猜你喜欢
      • 2013-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-24
      • 2016-06-19
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多