我只想在某个字后跟=
符号时才抓取特定的字符串。
此外,我希望在=
符号后获取所有信息,直到达到/
或字符串结束。
让我们举个例子:
somestring.bla /测试= 123 / ohboy /产品/产品=捕获
我想获得item=capture
但不是单独的项目。
我正在考虑使用前瞻,但我不确定这是否可行。我很感激任何帮助,因为我正在努力掌握正则表达式。
答案 0 :(得分:3)
答案 1 :(得分:2)
如果你想捕获item=capture
,它很简单:
/item=[^\/]*/
如果您还要提取值,
/item=([^\/]*)/
如果只想要匹配该值,那么您需要在后面使用look- 。
/(?<=item=)[^\/]*/
编辑:由于失眠导致的错误太多。另外,螺旋PHP及其无法忽略字符组中的分隔符作为分隔符。
答案 2 :(得分:0)
这是我前段时间写的一个函数。我稍微修改了一下,并添加了$keys
参数,以便您可以指定有效的密钥:
function getKeyValue($string, Array $keys = null) {
$keys = (empty($keys) ? '[\w\d]+' : implode('|', $keys));
$pattern = "/(?<=\/|$)(?P<key>{$keys})\s*=\s*(?P<value>.+?)(?=\/|$)/";
preg_match_all($pattern, $string, $matches, PREG_SET_ORDER);
foreach ($matches as & $match) {
foreach ($match as $key => $value) {
if (is_int($key)) {
unset($match[$key]);
}
}
}
return $matches ?: FALSE;
}
只需输入字符串和有效键:
$string = 'somestring.bla/test=123/ohboy/item/item=capture';
$keys = array('test', 'item');
$keyValuePairs = getKeyValue($string, $keys);
var_dump($keyValuePairs);