用字符串中的HTML链接替换类似Markdown的链接

时间:2016-06-28 14:02:21

标签: php

我有一个

形式的字符串
"Look at this [website]{http://www.stackoverflow.com} 
or at this [page]{http://www.google.com}"

我想用PHP解析它们

"Look at this <a href='http://wwwstackoverflow.com'>website</a> 
or at this <a href='http://www.google.com'>page</a>"

我该怎么做?

我虽然使用str_replace(),但我不知道如何在括号[]之间获取字符串。

编辑[26.08.2016] :答案使用PHP preg_replace方法和正则表达式。我不明白这里给出的答案,但它有效,所以我很高兴但现在我找到了this免费教程,教你如何使用正则表达式。我发现它非常有帮助。特别是当一个人想要为类似的案例做出自己的正则表达时。

2 个答案:

答案 0 :(得分:7)

使用preg_replace

进行尝试
$str="Look at this [website]{http://www.stackoverflow.com} or at this [page]{http://www.google.com}";

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

输出:

Look at this <a href='http://www.stackoverflow.com'>website</a> or at this <a href='http://www.google.com'>page</a>

工作示例:https://3v4l.org/jLbff

答案 1 :(得分:1)

使用preg_replace

可以轻松完成此操作
$pattern = "/(\\[([^\\]]+)\\]\\{([^\\}]+)\\})/";
$replacement = '<a href="$3">$2</a>';
$finalStr = preg_replace($pattern, $replacement, $yourString);