如何使用 php 正则表达式制作 html 链接

我的字符串

[[https://example.com|link]]

转换

<a href="https://example.com>link</a>

我的正则表达式是

/\[{2}(.*?)\|(.*?)\]{2}/s

但它不起作用。我是 php 正则表达式的新手。


30秒到达战场
浏览 95回答 1
1回答

呼唤远方

你可以使用preg_replace('~\[\[((?:(?!\[\[).)*?)\|(.*?)]]~s',&nbsp;'<a&nbsp;href="$1">$2</a>',&nbsp;$string)请参阅正则表达式演示细节\[\[- 一个[[子串((?:(?!\[\[).)*?)- 第 1 组($1在替换模式中指该组内的值):任何字符 (&nbsp;.),出现 0 次或多次但尽可能少 (&nbsp;*?),不启动[[字符序列 (&nbsp;(?!\[\[))\|- 一个|字符(.*?)- 第 2 组 (&nbsp;$2):]]- 一个子]]字符串。请参阅PHP 演示:$string = "[[some_non-matching_text]] [[https://example.com|link]] [[this is not matching either]] [[http://example2.com|link2]]";echo preg_replace('~\[\[((?:(?!\[\[).)*?)\|(.*?)]]~s', '<a href="$1">$2</a>', $string);// => [[some_non-matching_text]] <a href="https://example.com">link</a> [[this is not matching either]] <a href="http://example2.com">link2</a>
打开App,查看更多内容
随时随地看视频慕课网APP