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)