【问题标题】:How would I properly insert this PHP into an <a> tag's title?我如何正确地将这个 PHP 插入到 <a> 标签的标题中?
【发布时间】:2011-09-07 17:07:57
【问题描述】:

我知道这段代码不正确,但我想将 HTML 和 PHP 注入到下面标签的标题中。

<p class="related_articles" title="<a href='<?php the_field(related_articles_1_link); ?>' target="_blank"><?php echo the_field(related_articles_1_title); ?></a>"Related Articles</p>

我正在使用 jQuery 工具提示插件 (http://flowplayer.org/tools/tooltip/index.html) 从标题标签中获取内容并将其显示为工具提示内容。我有高级自定义字段设置(WordPress 插件),允许我发布自定义字段内容。实际上,我在这些自定义字段中发布的内容最终会出现在工具提示中。

我的目标是在用户将鼠标悬停在“相关文章”上时生成一个工具提示,显示一个可点击的链接。同样,上面的 jQuery 工具提示插件从标题中抓取内容,这就是造成困难的原因

【问题讨论】:

  • 你想得到什么HTML代码?将示例添加到您的代码中。
  • 你想在你的标题里面放一个链接???
  • 我相信即使你在锚标题中放了一个链接,它也无济于事
  • 我正在使用的工具提示(我编辑了我的原始帖子)从标题中抓取内容
  • 为什么需要将链接放在工具提示中?会是什么链接?通常,产生工具提示的元素是可链接的。这种代码不会得到验证,而且很可能在大多数浏览器中都不起作用。而是告诉我们,更高的目标是什么,我们可以为您提供替代方案。

标签: php jquery html


【解决方案1】:

好的,我们了解您要执行的操作。让我们弄清楚一些事情。

<p class="related_articles" title="<a href='<?php the_field(related_articles_1_link); ?>' target="_blank"><?php echo the_field(related_articles_1_title); ?></a>"Related Articles</p>

在很多层面上都是错误的。首先,它以任何方式无效。其次,你不会结束你的&lt;a&gt;。您还缺少一个回声和target="",内部title="" 没有转义:target=\"\"

所以简而言之,直接回答你的问题,这可能会起作用(也许,因为它非常不常见和不标准)

<p class="related_articles" title="<a href=\"<?php echo the_field(related_articles_1_link); ?>\" target=\"_blank\"><?php echo the_field(related_articles_1_title); ?></a>">Related Articles</p>

另外,正如已经提到的用户之一。如果您的服务器启用了short open tags,那么您可以缩短&lt;?php echo $foo; ?&gt;&lt;?= $foo ?&gt;。因此,在您的代码案例中,它看起来像:

<p class="related_articles" title="<a href=\"<?= the_field(related_articles_1_link) ?>\" target=\"_blank\"><?= the_field(related_articles_1_title) ?></a>">Related Articles</p>

然而,可能已经提到过。这不是推荐的方法,可能会产生各种问题。我建议研究以获得更好的解决方案。

【讨论】:

  • 是的....我想我需要一个更好的解决方案。我尝试了每个人的,我似乎不想为我绘制 jQuery 工具提示。
  • @Brian 按照我在上面评论中提到的那样重新格式化您的问题,并给出这个问题大约一个小时。你一定会得到你的解决方案,或者至少是它的基础。
【解决方案2】:

如果您的服务器支持,请使用短格式:

&lt;?=the_field(related_articles_1_link)?&gt;

否则,你应该回应它:

&lt;?php echo the_field(related_articles_1_link); ?&gt;

【讨论】:

    【解决方案3】:
    <p class="related_articles" title="<?php echo htmlspecialchars('<a href="'. the_field(related_articles_1_link) .'">'. the_field(related_articles_1_title) .'</a>'); ?>">Related Articles</p>
    

    虽然这应该可行,但我不确定您提到的 jQuery 插件是否能够将标题属性中的给定 html 解释为 HTML(您需要对其进行测试)。这很可能会被解释为文本,并且所有标签都将对最终用户可见,但这不是您想要的。

    我找到了一个如何以不同方式实现此功能的示例:http://flowplayer.org/tools/demos/tooltip/any-html.html

    【讨论】:

      【解决方案4】:

      这可能是你想要的吗?

      <p class="related_articles">
          Related Articles:
          <a href="<?php echo the_field(related_articles_1_link); ?>" target="_blank">
              <?php echo the_field(related_articles_1_title); ?>
          </a>
      </p>
      

      既然您已经澄清您的问题是关于jQuery Tooltip plugin,您应该执行以下操作:

      <p class="related_articles">Related Articles</p>
      
      <a class="tooltip" href="<?php the_field(related_articles_1_link); ?>" target="_blank">
          <?php echo the_field(related_articles_1_title); ?>
      </a>
      

      Javascript:

      $('.related_articles').tooltip();
      

      这样做的原因:

      工具提示插件会查看应用了.tooltip() 的元素之后的元素。如果下一个元素的类名是 tooltip,它将使用它作为工具提示的内容(而不是 title 属性)。

      【讨论】:

      • 我认为他想要带有工具提示和可点击链接的

        标签。

      • 好吧,除非他想制作一个 javascript 工具提示,否则这是不可能的。
      • @Joseph Silber 我正在使用的工具提示(我编辑了我的原始帖子)从 title="" 获取内容
      【解决方案5】:

      鉴于您将 html 内容放置在 HTML 属性中,它应该被转义。正如@Karolis 所说,这样做:

      <p class="related_articles" title="<?php echo htmlentities('<a href="'.the_field(related_articles_1_link).'" target="_blank">'.the_field(related_articles_1_title).'</a>'); ?>">Related Articles</p>
      

      这应该会生成一个带有链接的工具提示。如果您在工具提示上看到诸如“& lt;a href="... & gt;" 之类的东西,则该插件没有对 html 值进行转义。您可以对这些值进行转义,但不幸的是 javascript 没有功能。为此,您可以查看php.js 它在 js 中提供了 php 的功能,但这似乎有点矫枉过正。你可以像这样替换麻烦的字符:

      <?php
      // Generate complete tootltip content
      $tootltipContent = '<a href="'.the_field(related_articles_link_1).'">'.the_field(related_articles_link_1).'</a>';
      // Search for these
      $search = array('<','>','"');
      // And replace them with these
      $replacements = array('@#','@#','\"'); 
      $tooltipContent = str_replace($search,$replacements,$tooltipContent);
      ?>
      <p class="related_articles" title="<?php echo $tooltipContent; ?>">Related Stuff</p>
      

      然后在插件中查找从元素中提取标题的行。 (提示:在插件源代码上搜索“title”。应该有一个地方可以提取值)它可能看起来像这样 tooltipContent = $(someVar).attr('title');现在在js中运行逆替换:

      tooltipContent = tooltipContent.replace('@#','<').replace('#@','>').replace('\"','"');
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-26
        • 2013-09-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多