【问题标题】:preg replace to generate a linkpreg 替换以生成链接
【发布时间】:2012-04-26 13:07:50
【问题描述】:

我正在开发一个简单的 cms,在某些情况下我想在数据库中存储一个可能包含一些链接的段落,但我不想在数据库中存储 html 代码,我希望它如下所示:

一些文字,一些文字||关键字||http://an-external-site.com/keyword||一些文字和一些文字

然后用php生成这样的链接:

一些文字,一些文字关键字一些文字和一些文字

那么,该怎么做呢?以 preg_replace() 为例

有没有办法让网址使用预定义的变量指向我网站内的内部页面,例如

一些文字,一些文字||关键字||MS/关键字||一些文字和一些文字

这将是:

一些文字,一些文字关键字一些文字和一些文字

MS 指的是我的网站,例如 http://mysite.com/

所以这里 php 函数获取模式,然后决定是像示例 1 中那样简单地使用完整的 url 还是用等于 http://mysite.com/ 的预定义变量替换 MS

谢谢。

【问题讨论】:

    标签: php preg-replace preg-match


    【解决方案1】:

    我建议使用bbcode 之类的类来直接获取项目中的非html 代码。

    如果你仍然想使用正则表达式,你可以使用这样的东西:

    $pattern = '=^(.*)<a(.*)href\="?(\S+)"([^>]*)>(.*)</a>(.*)$=msi';
    while (preg_match($pattern, $row, $txt))
    {
      /* $txt[3] holds the link. */
      echo $txt[3]."\n";
    
      $row = $txt[1]." here was a link ".$txt[6];
    }
    
    /* print $row */
    print "<br>".nl2br($row);
    

    【讨论】:

    • 谢谢你的想法,但它应该如何工作,因为你没有提到段落中使用的模式,函数应该找到类似 ||...||...|| 的内容。跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-05
    • 2012-03-27
    • 1970-01-01
    • 2012-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多