我需要一个可以生成正则表达式的函数。例如,如果我写
$pat = "My {$var} is {$var2}"
生成一个正则表达式,当我使用
preg_match($pat,"My name is Kevin",$matches);
返回
$matches[1] = 'name';
$matches[2] = 'Kevin';
字符串可以是:“我的 $nameword 是 $name,我是 $age 岁”
问题是:
FIG1
<?php
function gen_pattern($string)
{
<--- add code for generating pattern --->
}
?>
FIG2
$pat = gen_pattern('my name is {$X}');
ereg($pat,'my name is moo',$regs);
//$regs[1] == "moo„
([^\s]*)
$pat = gen_pattern('my {$YZ} is {$IJK}');
ereg($pat,'my name is moo',$regs);
//$regs[1] == "name", $regs[2] == "moo"
我的作业描述如下:
图 1 显示了一个可以生成正则表达式的函数,可用于 ereg 函数。
图 2 显示了该模式应该如何工作。在给定的字符串中,每一项{$ABC}代表一个占位符,即{$X}是“我的名字是{$X}”中的单个占位符,而“我的{$YZ}是”中有两个占位符{$IJK}”。占位符可以是任何大于零的长度。
在结果模式中,每个占位符代表文本的一个单词,必须将其添加到结果列表中。即{$X} 表示“我的名字是”之后的下一个单词。因此,如果在文本“my name is moo”上使用该模式,则 $regs[1] 变为“moo”。假设我们只有 [az ]* 形式的文本(注意空格)。
我的任务:
填写图 1 中的绿点。不要费心处理错误或检查给定字符串的正确语法(即不会出现“我的名字是 {{}”或类似的无效输入)。
我不知道从哪里开始。