正则表达式单词以char开头

时间:2013-01-25 00:46:01

标签: php regex string

我只想在某个字后跟=符号时才抓取特定的字符串。

此外,我希望在=符号后获取所有信息,直到达到/或字符串结束。

让我们举个例子:

  

somestring.bla /测试= 123 / ohboy /产品/产品=捕获

我想获得item=capture但不是单独的项目。

我正在考虑使用前瞻,但我不确定这是否可行。我很感激任何帮助,因为我正在努力掌握正则表达式。

3 个答案:

答案 0 :(得分:3)

[^/=]*=[^/]*

会为您提供符合您要求的所有配对。

所以从你的例子中它应该返回:

  

测试= 123

     

项=捕获

Refiddle Demo

答案 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);