php - 如何将 [link](#) 替换为 <a href ="#">link</a>?

标签 php regex string str-replace

我想做一些类似stackoverflow的事情。实际上改变了这种风格[]()到这种风格<a href=""></a> 。这是我的尝试:

$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>

但现在,我需要改变link# ,我该怎么做?

最佳答案

您想查看preg_replace() ,这样您就可以使用正则表达式来替换它,例如

$str = preg_replace("/\[(.*?)\]\((.*?)\)/", "<a href='$2'>$1</a>", $str);

正则表达式解释:

\[(.*?)\]\((.*?)\)
  • \[ 匹配字符 [ 字面意义
  • 第一个捕获组(.*?)
    • .*? 匹配任何字符(换行符除外)
      • 量词:*? 介于零次和无限次之间,尽可能少的次数,根据需要扩展[惰性]
  • \] 字面匹配字符 ]
  • \( 匹配字符(字面上
  • 第二个捕获组(.*?)
    • .*? 匹配任何字符(换行符除外)
      • 量词:*? 介于零次和无限次之间,尽可能少的次数,根据需要扩展[惰性]
  • \) 字面上匹配字符 )

关于php - 如何将 [link](#) 替换为 <a href ="#">link</a>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31629662/

相关文章:

java - 在获得 Volley 响应时始终获得 "please check the number"

c# - 在 C# (.NET) 中是否有任何函数可以相应地比较字符串的长度?

php - 以特定字符串开头和结尾且中间没有(其他)字符串的正则表达式

PHP/MySQL - 使用 SELECT 但没有匹配数据时出错

php - 记住不使用 Laravel 的用户

php - 检查 Blade 模板中是否存在 session - Laravel

REGEX - 从专有名称中提取 OU

regex - sed:用换行符替换第一次出现的空格

c# - 字符串中模式的正则表达式数据注释测试

java - 检查给定的字符串是否可以由给定的一组字符串组成