什么定义了preg_replace()中要替换的正则表达式部分?

时间:2013-06-22 05:15:07

标签: php regex

我刚开始使用PHP正则表达式。我理解如何阅读和写作(我需要我的书,因为我没有记住任何模式符号)。我真的想在我的网站上使用RegExp for BB Code,使用preg_replace

我理解参数,但我不明白的是定义模式中要替换的内容是什么?到目前为止我所拥有的:

preg_replace('/(\[url=http:\/\/.*\])/','<a href="$1">$2</a>',"[url=http://google.com]");

现在,我知道它可能不是最好的“安全”明智的,我只想得到一些工作。我匹配整个字符串...所以我得到一个看起来像mysite/[url=http://google.com]的链接。

我阅读了关于它的PHP手册,但我仍然在努力吸收和理解某些东西时头疼:

  • 什么定义了由于模式而在字符串中被替换的内容?
  • 告诉我的是我的1美元和2美元等等是什么?

我甚至不知道他们叫什么。有人可以向我解释一下吗?

1 个答案:

答案 0 :(得分:3)

相同的替换没有错误:

$BBlink = '[url=http://google.com]';

$pattern = '~\[url=(http://[^] ]+)]~';
$replacement = '<a href="$1">$1</a>';
$result = preg_replace($pattern, $replacement, $BBlink);

说明:

1)模式

~       # pattern delimiter
\[      # literal opening square bracket
url=
(       # first capturing group
http://
[^] ]+  # all characters that are not ] or a space one or more times
)       # close the capturing group
]       # literal closing square bracket
~       # pattern delimiter

2)更换

$1指的是第一个捕获组

替代方案:http://www.php.net/manual/en/function.bbcode-create.php,请参阅第一个示例。