PHP Preg_match单个字符串中的多个项目?

时间:2015-02-19 15:48:37

标签: php regex preg-match preg-match-all

我目前正在将一些正文插入数据库中。这只是纯文本,但用户也希望能够添加工作链接。为了节省大量更改,我正在使用弹出窗口进行这些更改,该弹出窗口将按以下格式插入其链接:

[a]http://www.google.com[/a]

每个正文文本都可以包含多个链接。

当相关网页上显示此链接时,链接将更改为标准的html格式:

<a href="http://google.com">http://www.google.com</a>

我似乎无法设置preg_match来在字符串中多次执行此操作(请参阅下面的示例):

hello world [a]http://google.com[/a] how are you?
Ok. [a]http://yahoo.com[/a] Thanks for asing. [a]http://bing.com[/a]

非常感谢任何帮助!!!

谢谢, 凯恩

2 个答案:

答案 0 :(得分:1)

使用此:

$str = "[a]http://www.google.com[/a] xy [a]http://www.google.com[/a]";
$str = preg_replace("/\[a\](.*)\[\/a\]/Usi", "<a href=\"\\1\">\\1</a>", $str);
echo $str;

输出:

<a href="http://www.google.com">http://​www.google.com</a> xy <a href="http://www.google.com">http://​www.google.com</a>;

答案 1 :(得分:0)

这应该有效:

$str = preg_replace('~\[a](.*?)\[/a]~si', "<a href='$1'>$1</a>", $str);