Php 什么定义了preg_replace()中要替换的正则表达式节?
我刚开始学习PHP正则表达式。我知道如何读写它们(不过我需要我的书,因为我没有记住任何图案符号)。我真的想在我的网站上使用RegExp作为BB代码,使用Php 什么定义了preg_replace()中要替换的正则表达式节?,php,regex,Php,Regex,我刚开始学习PHP正则表达式。我知道如何读写它们(不过我需要我的书,因为我没有记住任何图案符号)。我真的想在我的网站上使用RegExp作为BB代码,使用preg\u replace 我理解这些参数,但我不理解的是什么定义了模式中要替换的内容?到目前为止,我所拥有的: preg_replace('/(\[url=http:\/\/.*\])/','<a href="$1">$2</a>',"[url=http://google.com]"); preg\u replace
preg\u replace
我理解这些参数,但我不理解的是什么定义了模式中要替换的内容?到目前为止,我所拥有的:
preg_replace('/(\[url=http:\/\/.*\])/','<a href="$1">$2</a>',"[url=http://google.com]");
preg\u replace('/(\[url=http:\/\/.*\])/,'','',“[url=http://google.com]");
现在,我知道这可能不是最好的“安全”策略,我只是想做点事情。我匹配整个字符串。。。所以我得到了一个类似于mysite/[url]的链接=http://google.com]
我仔细阅读了PHP手册,但在尝试吸收和理解一些东西时,我仍然感到头痛:
- 什么定义了字符串中因模式而被替换的内容
- 什么告诉我我的1美元和2美元等是什么
我甚至不知道它们叫什么。有人能给我解释一下吗?相同的替换没有错误:
$BBlink = '[url=http://google.com]';
$pattern = '~\[url=(http://[^] ]+)]~';
$replacement = '<a href="$1">$1</a>';
$result = preg_replace($pattern, $replacement, $BBlink);
2) 替换
$1
指第一个捕获组
备选方案:,请参见第一个示例。正常情况下,您什么都不懂,模式是错误的。嗯?有一场比赛,如果你是这么说的,那就没有。。。整个字符串是匹配的,所以我得到一个“.”和这个模式分隔符…这就是你的$1、$2…等等的原因吗?所以()定义捕获组,这些是你要替换的值!哦,是的。多谢各位@RickyOrder:不,它只是用来分隔模式,而不是
/
,使用~
或#
作为模式分隔符更容易,因为这样可以避免逃逸所有斜杠。@RickyOrder:是的,括号定义了捕获组+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