【问题标题】:PHP Replace URLs in string with Anchor tagPHP用锚标记替换字符串中的URL
【发布时间】:2020-07-22 02:01:23
【问题描述】:

我正在尝试解析其中包含链接的字符串。 我很高兴指定它们遇到的格式,但是普通的 HTML 标记在传输过程中会被删除。

我建议采用以下格式:

[url=https://test.com]my link[/url]

变成:

<a href="https://test.com" target="_blank">my link</a>

不需要其他属性。

我有以下 preg 替换,但它不起作用

$result = preg_replace("/\[\burl\b=[1-9a-zA-Z:\.\-\/_]*?[\]]*?\[\/\burl\b\]/", "<a href='$1' target='_blank'>$2</a>", $str);

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

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

【问题讨论】:

    标签: php regex url


    【解决方案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] 子字符串。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-18
      • 1970-01-01
      相关资源
      最近更新 更多