我正在尝试解析其中包含链接的字符串。我很高兴指定它们遇到的格式,但是普通的HTML标签在运输过程中被剥离了。
我建议使用以下格式:
[url=https://test.com]my link[/url]
成为:
<a href="https://test.com" target="_blank">my link</a>
没有其他必要的属性。
我有以下预浸料替换,但不起作用
$result = preg_replace("/\[\burl\b=[1-9a-zA-Z:\.\-\/_]*?[\]]*?\[\/\burl\b\]/", "<a href='$1' target='_blank'>$2</a>", $str);
在构建正则表达式时,当我尝试获取链接/文本时,我就倒下了。
非常感谢任何帮助/简化/其他想法!
您可以考虑使用
preg_replace('~\[url=([^][\s]+)](.*?)\[/url]~s', "<a href='$1' target='_blank'>$2</a>", $text)
请参见PHP demo和regex demo。
详细信息
\[url=
-一个[url=
子字符串([^][\s]+)
-组1($1
):[
,]
和空格之外的任何1个或多个字符]
-一个]
字符(.*?)
-组2($2
):零个或多个字符,尽可能少]\[/url]
-[/url]
子字符串。