Php 如何将[链接](#)替换为<;a href="#&引用&燃气轮机;链接</a>;?

Php 如何将[链接](#)替换为<;a href="#&引用&燃气轮机;链接</a>;?,php,regex,string,str-replace,Php,Regex,String,Str Replace,我想做一些类似stackoverflow的事情。实际上,将此样式[]()更改为此样式。以下是我的尝试: $str = '[link](#)'; $str = str_replace('[','<a href="',$str); // output: <a href="link](#) $str = str_replace(']','">',$str); // output: <a href="link">(#) $str = str_r

我想做一些类似stackoverflow的事情。实际上,将此样式
[]()
更改为此样式
。以下是我的尝试:

$str = '[link](#)';
$str = str_replace('[','<a href="',$str);     // output: <a href="link](#)
$str = str_replace(']','">',$str);            // output: <a href="link">(#)
$str = str_replace('(','',$str);              // output: <a href="link">#)
$str = str_replace(')','</a>',$str);          // output: <a href="link">#</a>
$str='[link](#)';
$str=str_replace('[','$str);//输出:

但是现在,我需要用
#
更改
链接
,我该怎么做呢?

你想看看,用这个你可以用正则表达式来代替它,例如

$str = preg_replace("/\[(.*?)\]\((.*?)\)/", "<a href='$2'>$1</a>", $str);
  • \[匹配字符[字面意思]
  • 第一捕获组(.*)
    • *?匹配任何字符(换行符除外)
      • 量词:*?在零次和无限次之间,尽可能少的次数,根据需要扩展[lazy]
  • \]逐字匹配字符]
  • \(匹配字符(字面意思)
  • 第二捕获组(.*)
    • *?匹配任何字符(换行符除外)
      • 量词:*?在零次和无限次之间,尽可能少的次数,根据需要扩展[lazy]
  • \)逐字匹配字符)

非常好,工作正常,但有一个新问题,为什么您的模式是/
不适用于javascript?@stack,因为你问了一个PHP问题。js正则表达式有时有点不同。我知道,我认为所有语言的模式都是相同的,无论如何,谢谢。你的解释也很好…!我一直害怕正则表达式,但现在对我来说更容易理解。看,我需要一个你知道javascript吗?或者我问了一个关于javascript的新问题?我试过了,但找不到它(javascript版本)。
\[(.*?)\]\((.*?)\)