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

PHP Preg_match multiple items in a single string?

我目前正在向数据库中插入一些正文。这只是纯文本,但用户也希望能够添加有效的 links。为了避免进行大规模更改,我正在使用弹出窗口进行这些更改,该弹出窗口将按以下格式插入 link:

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

每个正文可以超过一 link 英寸。

相关网页上显示时,links 将更改为标准 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]

任何帮助将不胜感激!!!

谢谢, 凯恩

这应该有效:

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

使用这个:

$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>;