【问题标题】:Identify a hashtag # or $ and automatically replace the text with a link [duplicate]识别主题标签 # 或 $ 并自动将文本替换为链接 [重复]
【发布时间】:2021-03-06 19:41:18
【问题描述】:

假设我的 Wordpress 标题、帖子内容和 cmets 中有这些文本:

#TSLA

$TSLA

我想做的是让 Wordpress 识别文本 #TSLA 和 $TSLA 并自动替换为超链接,如下所示:

<a href="https://www.mywebsite.com/?s=TSLA">#TSLA</a>
<a href="https://www.mywebsite.com/?s=TSLA">$TSLA</a>

至于$,我只想为字母(A到Z)添加一个超链接,而不是数字。

基本上,与 Twitter 所做的非常相似。

有没有 function.php 代码可以做到这一点?

谢谢。

编辑:好的,我想感谢 Markus Zeller。

基本上这是我到目前为止所得到的:

<?php
$x = "#TSLA";
$z = preg_replace("/^#*/", "", $x);
echo "<a href='?s=$z'>#$z</a>";
?>

这正是我所需要的。

查找以 # 开头并替换为超链接的行。

我还有两件事要弄清楚:

  1. 如何使用 $ 而不是 #。
  2. 现在正在回显,我需要通过在 functions.php 中添加一行来在 wordpress 上全局替换它

任何进一步的帮助将不胜感激。

【问题讨论】:

标签: php wordpress function


【解决方案1】:

使用正则表达式,您可以通过模式查找和替换文本。

你改变了你的问题,所以这个答案符合你原来的问题。但是有了这个提示,你应该很容易适应。

我们正在搜索 #$ 后跟单词字符并将其替换为 html URL。

$text = <<<'__TEXT'
Hello, my friend. A $tesla is a nice car.
Hello, my friend. A #tesla is a nice car.
__TEXT;

$new = preg_replace('/(\$|#)(\w+)/s', '<a href="https://www.example.com/?s=\2">\1\2</a>', $text);

$new 包含:

Hello, my friend. A <a href="https://www.example.com/?s=tesla">$tesla</a> is a nice car.
Hello, my friend. A <a href="https://www.example.com/?s=tesla">#tesla</a> is a nice car.

【讨论】:

  • 感谢 Markus,这正是我所需要的。抱歉,我是 php 新手。最后一个问题,添加到functions.php 的最终代码是什么,以便全局影响我的wordpress 博客上已有的全部内容。感谢您的努力。
  • 我不是 wordpress 专家,所以我想这取决于您要过滤文本的位置。但我认为add_filter() 是您要搜索的内容。
  • 我已经设法为内容添加_filter()。它做得很好,但也有一些冲突。它用一个奇怪的 ’ 替换了 ' 和 " 并链接到 #8217。不知道为什么它试图替换这两个字符 ' 和 " 即使它们没有设置为替换。有什么想法吗?
  • 看起来像 html 转义,但如前所述,我不是 wordpress 专家。检查其他过滤器或订购事宜。如果这没有帮助,请搜索或提出新问题。
  • 没问题,感谢您的帮助和努力,您帮了很多忙,我会继续寻找。
猜你喜欢
  • 2016-01-12
  • 2013-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-17
  • 1970-01-01
相关资源
最近更新 更多