Php 用preg_Match_all匹配数组中的所有URL路径

Php 用preg_Match_all匹配数组中的所有URL路径,php,json,regex,Php,Json,Regex,我有我的正则表达式 \["([^_]+)"\] \[-匹配“[”字符 “-匹配一个”“”字符 [^\uuz]将多个令牌分组在一起,并创建一个用于提取子字符串或使用反向引用的捕获组 ^匹配不在集合中的任何字符 +匹配前面的一个或多个标记 这是简单的工作 ["Infant", "Kids", "Newborn", "Småbarn", "adult", "kids&qu

我有我的正则表达式

\["([^_]+)"\]
\[
-匹配“[”字符

-匹配一个”“”字符

[^\uuz]
将多个令牌分组在一起,并创建一个用于提取子字符串或使用反向引用的捕获组

^
匹配不在集合中的任何字符

+
匹配前面的一个或多个标记

这是简单的工作

["Infant", "Kids", "Newborn", "Småbarn", "adult", "kids"]
但不适用于URL集

["http://www.elodiedetails.com/storage/01C91C41AFB1E9E491CCB750D86948330B2EFFA95C33849C0127E5557380AF8B/b1e48c712dd94cc2b91d2ced7e40f7c6/jpg/media/245df3634bd045b4bbf7bdb003e5ab1b/zip_go-desert-weaves-elodie-details_50610135582NA_3_1000px.jpg", "http://www.elodiedetails.com/storage/FEFED8E72F7F2B4B1D546FBB8D10A7298C963A1F141EA55EFABA5B29B316D924/877cb34feaaf4560967081ef63716b09/jpg/media/08db7d4521704b35866b10b5f445cd5b/store-my-stuff-wild-paris-elodie-details-SS20-lifestyle_70650128580NA_web.jpg"]
我将尝试从中返回结果的示例

但是这个表达式为我抛出了语法错误

    preg_match_all('/\["([^]+)"\]/', $t, $matches);

怎么还需要更改匹配UTRL的正则表达式呢?

您可以使用regex执行此操作,但为什么要这样做呢,正如@user4642212所说,这看起来像一个json字符串,可以通过解析

在正则表达式中,您只需查找
,然后查找除
之外的所有内容,然后再次查找
。 但是要小心,这个正则表达式不会处理像这样的转义引号

工作

专业提示:当您使用regexr时,将其设置为PCRE(右上角)。这是php使用的


^
这个表达式就是问题所在。你说“匹配与
不同的每个字符。因为你的url包含
我想这就是它不匹配的原因。你的字符串看起来像一个JSON数组,所以为什么不先使用
JSON.parse
呢?没有必要用
\[“
”\]
。在
婴儿、儿童、
示例中,URL路径在哪里匹配?为什么要排除下划线?@user4642212 noyp,
\[”“\]
此正则表达式不可用works@shuba.ivan你在说什么?哪个正则表达式不起作用?你试着解析你的JSON了吗?我之前建议过
JSON.parse
,但我没有注意到这是PHP而不是JavaScript。PHP中肯定有一个JSON解析函数,你可以找到。
// the "hard" way
preg_match_all('/"([^"]+)"/', $string, $matches);
var_dump($matches[1]);

// the easy way
var_dump(json_decode($string));