【问题标题】:Instagram hashtags and preg_replaceInstagram 主题标签和 preg_replace
【发布时间】:2019-05-12 18:29:43
【问题描述】:

我收到一些 Instagram 帖子的简单描述文本,并尝试突出显示主题标签。我使用此代码:

 $caption = preg_replace('/(?<!\S)#([0-9a-zA-Z_.]+)/', '<a href="/tag/$1">#$1</a>', $caption);

问题是:这不适用于非拉丁字符,例如“ş”或“ö”。第二个问题:这不适用于没有空格的主题标签,例如“#quote#quoteoftheday #myquote” - 我的正则表达式将仅突出显示“#quote”和“#myquote”。我可以用一个正则表达式以某种方式解决这些问题吗?

【问题讨论】:

    标签: php regex preg-replace


    【解决方案1】:

    您可以删除 (?&lt;!\S) 部分,这样它也可以在 # 中存在非空白字符时匹配,并添加 unicode 标志 /u

    您可以将0-9a-zA-Z_ 缩短为\w,这样您的表达式可能如下所示:

    #([\w.]+)
    

    Regex demo

    $caption = "#quote#öquoteoftheday #şmyquote";
    $caption = preg_replace('/#([\w.]+)/u', '<a href="/tag/$1">#$1</a>', $caption);
    echo $caption;
    

    结果:

    <a href="/tag/quote">#quote</a><a href="/tag/öquoteoftheday">#öquoteoftheday</a> <a href="/tag/şmyquote">#şmyquote</a>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-20
      • 2014-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多