我想解析模板文件并找到一组特定的变量:
<!-- [LOOP-VARIABLENAME] -->
我只想获得变量名和匹配的起始位置。首先我使用了strpos(),但这是函数无法获取正则表达式参数。
Array (
[0] => 1678 // strpos
[1] => <!-- [LOOP-VARIABLENAME] --> // full match
[name] => VARIABLENAME
)
这可能吗?我试图使用这个正则表达式:
preg_match_all('/<!-- [LOOP-(?P<year>\W+)/', $html, $matches, PREG_OFFSET_CAPTURE);
但没有积极的结果。
感谢您的帮助。
答案 0 :(得分:0)
看起来你没有逃脱你的特殊字符..例如,
[LOOP
应该是
\[LOOP
你的正则表达式。
答案 1 :(得分:0)
<?php
$html = "jg<!-- [LOOP-VARIABLENAME] -->sdfsdfsdf<!-- [LOOP-TESTNAME] -->sfdsdffsd";
preg_match_all('/<!-- \[LOOP-(\w+)]\ -->/', $html, $matches, PREG_OFFSET_CAPTURE);
echo '<pre>' . print_r($matches, true) . '</pre>';
?>
此代码提供如下输出:
Array
(
[0] => Array
(
[0] => Array
(
[0] =>
[1] => 2 //position where matching <!-- starts, 1st var
)
[1] => Array
(
[0] =>
[1] => 39 //position where matching <!-- starts, 2nd var
)
)
[1] => Array
(
[0] => Array
(
[0] => VARIABLENAME
[1] => 13 //position where VARIABLENAME starts
)
[1] => Array
(
[0] => TESTNAME
[1] => 50 //position where TESTNAME starts
)
)
)
如果那个数组看起来不怎么样,我可以写一些代码来改造它。
答案 2 :(得分:0)
感谢您的回复,但已经尝试了这个
preg_match_all('/<!-- \[LOOP-(?P<name>\W+)/', "<!-- [LOOP-VARIABLENAME] -->", $matches, PREG_OFFSET_CAPTURE);
的print_r($匹配);
输出如下:
Array ( [0] => Array ( ) [name] => Array ( ) [1] => Array ( ) ) Array ( [0] => Array ( ) [name] => Array ( ) [1] => Array ( ) )