在PHP中提取正则表达式数组索引
问题描述:
我正在处理一个小的脚本,它从URL中抽取两个值。您可以在下面的代码中看到一个示例网址,我试图提取两位数的“i =”值和较长的“l =”值。在PHP中提取正则表达式数组索引
我做了一些广泛的搜索关于这一点,所有其他关于堆栈溢出的问题似乎非常简单。
我敢肯定,我超近,但最终我是一个Python/Django的家伙,我很茫然,为什么下面的代码不工作:
$s = "http://mwo.smurfy-net.de/mechlab#i=16&l=71a1896409db5818783971b72ba043f5f3a44fad";
$matches = array();
$result = preg_match('/^i=(?P<iVal>[0-9]+)&l=(?P<lVal>[a-z0-9]+)$/siU', $s, $matches);
echo $matches['iVal'];
echo $matches['lVal'];
当我执行获取有关两个数组值iVal和lVal未定义的错误。
我不确定问题是否与代码本身或我的正则表达式。任何帮助,将不胜感激。
答
除去插入符号:
$result = preg_match('/i=(?P<iVal>[0-9]+)&l=(?P<lVal>[a-z0-9]+)$/siU', $s, $matches);
// here ___^
''^断言在该行的开始时的位置。使用'i =(?P [0-9] +)&l =(?P [a-z0-9] +)'没有'U'标志。我说这只是为了防止在'l'之后添加另一个变量 –
ctwheels