首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >替换字符串中任何括号括起来的单词的所有ocurrence

替换字符串中任何括号括起来的单词的所有ocurrence
EN

Stack Overflow用户
提问于 2012-05-08 02:56:03
回答 1查看 618关注 0票数 2

我通常很有效率地独自解决PHP问题,但是对于这个特定的问题,我似乎找不到一个可行的解决方案。

我有一个由标准文本组成的$string,在文本中将有一些被方括号包围的关键字,我想将其转换为链接,但这并不是将字符串与预定义的‘已知’关键字数组进行比较并进行简单替换的简单情况,因为方括号的内容可以是任何内容。

例如,我需要以下内容:

代码语言:javascript
运行
复制
John Roberts is a jazz musician from Florida born in 1934. Some of his notable works include [A Gray Sky] and [Sophomore Effort].

应改为:

代码语言:javascript
运行
复制
John Roberts is a jazz musician from Florida born in 1934. Some of his notable works include <a href="search.php?search=a+gray+sky">A Gray Sky</a> and <a href="search.php?search=sophomore+effort">Sophomore Effort</a>.

应当指出的是:

  • $string将包含一个未知数量的方括号内的单词。如果有问题,使用方括号的
  • 不是必要的,但就目前而言,这似乎是最方便的方法。--

我不是要别人给我代码,我只需要有人告诉我我应该研究什么样的PHP函数,并指出正确的方向!

非常感谢大家,谢谢斯塔克溢流给我这个机会去问!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-08 03:06:08

代码语言:javascript
运行
复制
$string = "John Roberts is a jazz musician from Florida born in 1934. Some of his notable works include [A Gray Sky] and [Sophomore Effort].";

function rep_callback($match)
{
        $query = substr($match[0],1,-1);
        $query = urlencode($query);
        $link = '<a href="search.php?search='.$query.'">'.$match[0].'</a>';
        return $link;
}

echo $string."\n";
echo preg_replace_callback("/\[.+\]/U", "rep_callback", $string)."\n";

输出:

代码语言:javascript
运行
复制
John Roberts is a jazz musician from Florida born in 1934. Some of his notable works include [A Gray Sky] and [Sophomore Effort].
John Roberts is a jazz musician from Florida born in 1934. Some of his notable works include <a href="search.php?search=A+Gray+Sky">[A Gray Sky]</a> and <a href="search.php?search=Sophomore+Effort">[Sophomore Effort]</a>.
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10491967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档