这是一个字符串:
N%3A171717%2CN%3A%747474%2CN%3A555666%2CN%3A1234567&安培; BBN = 555666
从这个字符串中我如何提取 1234567 ?需要一个好的逻辑/语法。
我猜preg_match比PHP中的爆炸功能更好。
它是关于提取数据的PHP脚本。数字可以变化,数字的出现也可以变化,只有%2Cn%3A总是在数字前面。结尾总是有一个& bbn = anyNumber 。
答案 0 :(得分:3)
这看起来像编码网址的一部分,因此必然会有更好的方法来实现,但urldecoded()
您的字符串如下所示:
N:171717,N:t7474,N:555666,N:1234567&安培; BBN = 555666
所以:
preg_match_all('/n:(\d+)/', urldecode($string), $matches);
echo array_pop($matches[1]);
括号内的匹配位于$matches[1]
,因此只需array_pop()
即可获得最后一个元素。
如果&bbn=
可以在任何地方(开头除外),那么:
preg_match('/n:(\d+)&bbn=/', urldecode($string), $matches);
echo $matches[1];
答案 1 :(得分:1)
只有%2Cn%3A将始终位于数字前面
urldecoded相当于%2Cn%3A
是,n:
。
最后一个"封闭边界" &bbn
保持不变。
preg_match
函数将完成这项工作:
preg_match("/(?<=,n:)\d+(?=&bbn)/", urldecode("n%3A171717%2Cn%3A%747474%2Cn%3A555666%2Cn%3A1234567&bbn=555666"), $m);
print_r($m[0]); // "1234567"