如何用锚标记替换URL包含使用PHP的动态文本?

时间:2016-10-13 09:33:16

标签: php string url text preg-replace

如何使用PHP解析或转换链接到正确的<a>链接格式?

"http://developer.postmarkapp.com/developer-inbound-webhook.html"

这里有什么邮戳JSON API StrippedTextReply响应:

"This is example body with link <http://developer.postmarkapp.com/developer-process-parse.html>"

Possible format:
This is example body with (any link) <http://>
This is example body with <http://> (any link)

期待结果:

'This is example body with <a href="http://developer.postmarkapp.com/developer-process-parse.html">link</a>'

请注意动态中锚点的文本,即字符串中的URL之前。

1 个答案:

答案 0 :(得分:2)

preg_replace() 用锚替换URL。正则表达式选择URL并将其替换为锚标记,在 href 属性中包含该URL。

&#xA;&#xA;
  preg_replace(“/([\ w] ] +)[\ s] +&lt;([^>] +)&gt; /“,”&lt; a href ='$ 2'&gt; $ 1&lt; / a&gt;“,$ str);&#xA;  
&#xA;&#xA;
&#xA;&#xA;

编辑:&#xA;如果锚点的文字位置在字符串未知(在URL之前或之后),您需要使用 preg_replace_callback() 来检查匹配组的值。

&#xA;&#xA;
  preg_replace_callback(“/([\ w] +)[\ s] +&lt;([^&gt;] +)&gt;([\ w \ s] +)?/“,function($ matches){&#xA; if(isset($ matches [3]))& #xA;返回“{$ matches [1]}&lt; a href ='{$ matches [2]}'&gt; {$ matches [3]}&lt; / a&gt;”;&#xA; else&#xA ;返回“&lt; a href ='{$ matches [2]}'&gt; {$ matches [1]}&lt; / a&gt;”;&#xA;},$ str);&#xA;  
&#XA;