PHP用锚标记替换字符串中的URL

问题描述 投票:1回答:1

我正在尝试解析其中包含链接的字符串。我很高兴指定它们遇到的格式,但是普通的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);

在构建正则表达式时,当我尝试获取链接/文本时,我就倒下了。

非常感谢任何帮助/简化/其他想法!

php regex url
1个回答
1
投票

您可以考虑使用

preg_replace('~\[url=([^][\s]+)](.*?)\[/url]~s', "<a href='$1' target='_blank'>$2</a>", $text)

请参见PHP demoregex demo

详细信息

  • [\[url=-一个[url=子字符串
  • [([^][\s]+)-组1($1):[]和空格之外的任何1个或多个字符
  • []-一个]字符
  • [(.*?)-组2($2):零个或多个字符,尽可能少]
  • \[/url]-[/url]子字符串。
© www.soinside.com 2019 - 2024. All rights reserved.