我是正则表达式的新手,我遇到了一些麻烦。我正在尝试获取{{#user_data?}}和{{/ user_data?}}
之间的所有内容$content = '
{{#user_data?}}
<span class="hello">
Hello, {{username}}!
</span>
{{/user_data?}}';
$key = 'user_data?';
$regex = '/\{\{#'.$key.'\}\}(.*?)\{\{\/'.$key.'\}\}/';
if (preg_match_all($regex, $content, $matches))
{
print_r($matches);
}
else
echo 'no match found';
我做错了什么?
答案 0 :(得分:2)
除了评论'“没有逃避?
标志”,您还需要适当的修饰符:
$content = <<<STR
{{#user_data?}}
<span class="hello">
Hello, {{username}}!
</span>
{{/user_data?}}
STR;
$key = 'user_data\?';
$regex = '/\{\{#'.$key.'\}\}(.*?)\{\{\/'.$key.'\}\}/sim';
preg_match_all($regex, $content, $matches,PREG_SET_ORDER);
print_r($matches);
这将输出:
Array
(
[0] => Array
(
[0] => {{#user_data?}}
<span class="hello">
Hello, {{username}}!
</span>
{{/user_data?}}
[1] =>
<span class="hello">
Hello, {{username}}!
</span>
)
)
i
不是必需的,如果您需要区分大小写的模板,则应将其删除;
m
也可能是不必要的
s
是必须的,因此您可以将多行字符串与点匹配。