preg_replace生成链接

时间:2012-04-26 13:07:51

标签: php preg-replace preg-match

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

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

然后使用php生成如下链接:

一些文字,一些文字< a href =“http://an-external-site.com/keyword”>关键字< / a>一些文字和一些文字

那么,该怎么做?例如,使用preg_replace()

是否可以使用预定义变量将网址指向我网站中的内部网页,例如

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

将是:

一些文字,一些文字< a href =“http://mysite.com/keyword”>关键字< / a>一些文字和一些文字

其中MS引用我的网站,例如http://mysite.com/

所以这里php函数获取模式,然后决定是否只使用示例1中的完整URL,或者用等于http://mysite.com/的预定义变量替换MS

感谢。

1 个答案:

答案 0 :(得分: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);