2017-10-04 65 views
-2

我正在处理一个小的脚本,它从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未定义的错误。

我不确定问题是否与代码本身或我的正则表达式。任何帮助,将不胜感激。

+0

''^断言在该行的开始时的位置。使用'i =(?P [0-9] +)&l =(?P [a-z0-9] +)'没有'U'标志。我说这只是为了防止在'l'之后添加另一个变量 – ctwheels

回答

0

除去插入符号:

$result = preg_match('/i=(?P<iVal>[0-9]+)&l=(?P<lVal>[a-z0-9]+)$/siU', $s, $matches); 
//    here ___^