裁剪PHP字符串

时间:2019-05-21 03:46:03

标签: php regex

我将URL存储在名为 $ page 的变量中。

我使用以下代码获取 utm_campaign 值。

preg_match_all('#utm_campaign=([^\s]+)#', $page, $matches);
$utm_campaign = implode(' ', $matches[1]);

但是,我发现URL是否为 www.site.com/?utm_campaign=test&utm_source=test ,它将设置$utm_campaign等于 test&utm_source = test 而不只是 test

如何修改上面的代码以解决此问题?

2 个答案:

答案 0 :(得分:1)

&之后添加\s

请参阅:

#utm_campaign=([^\s&]+)#

Regex101

答案 1 :(得分:1)

使用parse_urlparse_str来获取查询参数,如下所示:

const input = [
    {
        env: 'lorem',
        skuname: 'skuname1',
        token: 'dummy'
    }, 
    {
        env: 'lorem',
        skuname: 'skuname2',
        token: 'dummy'
    }
];

const getUserName = (username) => {
    return new Promise(resolve => {
        setTimeout(()=>resolve(username), 2000);
    });
};

(async () => {
    const resp = await Promise.all(input.map(({skuname}) => getUserName(skuname)));
    console.log(resp);
})();

// Or 

Promise.all(input.map(({skuname}) => getUserName(skuname)))
    .then(resp => {
        console.log(resp);
    });