Php 如何指定正则表达式搜索组?

Php 如何指定正则表达式搜索组?,php,regex,Php,Regex,我想用preg\u filter替换我的自定义creted标记以实现JS脚本: preg_filter( "/<!--@SCRIPT-->.*$<!--@SCRIPT-->/", '<script type="text/javascript" src="$0"></script>', '<!--@SCRIPT-->/test.js<!--@SCRIPT--> ); preg_过滤器( "/.*$

我想用
preg\u filter
替换我的自定义creted标记以实现JS脚本:

preg_filter(
    "/<!--@SCRIPT-->.*$<!--@SCRIPT-->/", 
    '<script type="text/javascript" src="$0"></script>', 
    '<!--@SCRIPT-->/test.js<!--@SCRIPT-->
);
preg_过滤器(
"/.*$/", 
'', 
'/test.js
);
发件人:
/test.js

我得到:
您必须使用捕获组
(…)
来提取标记之间的内容。然后您可以在替换字符串中用
$1
引用它

$result = preg_filter('~<!--@SCRIPT-->([^<]*)<!--@SCRIPT-->~', 
                      '<script type="text/javascript" src="$1"></script>', 
                      '<!--@SCRIPT-->/test.js<!--@SCRIPT-->');
试试这个-

preg_filter(
"/<!--@SCRIPT-->(.*?)<!--@SCRIPT-->/", 
'<script type="text/javascript" src="$1"></script>', 
'<!--@SCRIPT-->/test.js<!--@SCRIPT-->'
)
/* OUTPUT */
string '<script type="text/javascript" src="/test.js"></script>' (length=55)
preg_过滤器(
"/(.*?)/", 
'', 
“/test.js”
)
/*输出*/
字符串“”(长度=55)

这里的
$0
是什么?@Ultra:
$0
代表整个匹配(在我们的例子中是所有字符串),您不需要它。
preg_filter(
"/<!--@SCRIPT-->(.*?)<!--@SCRIPT-->/", 
'<script type="text/javascript" src="$1"></script>', 
'<!--@SCRIPT-->/test.js<!--@SCRIPT-->'
)
/* OUTPUT */
string '<script type="text/javascript" src="/test.js"></script>' (length=55)