php - 将数组中的所有 url 路径与 preg_match_all 匹配
问题描述
我有我的正则表达式
\["([^_]+)"\]
\[
- 匹配一个“[”字符
"
- 匹配一个 """ 字符
[^_]
- 将多个标记组合在一起并创建一个捕获组以提取子字符串或使用反向引用。
^
匹配任何不在集合中的字符。
+
匹配 1 个或多个前面的标记。
这是简单的工作
["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);
如何也需要更改匹配 utrls 的正则表达式?
解决方案
你可以用正则表达式来做到这一点,但你为什么要这样做,正如@user4642212 所说,这看起来像一个 json 字符串。可以通过json_decode解析。
在正则表达式中,您只需查找"
then 之外的所有内容,然后"
再查找"
. 但要小心,这个正则表达式不会处理这样的转义引号\"
。
// the "hard" way
preg_match_all('/"([^"]+)"/', $string, $matches);
var_dump($matches[1]);
// the easy way
var_dump(json_decode($string));
工作示例。
专业提示:使用 regexr 时,请将其设置为 PCRE(右上角)。这就是php使用的。
推荐阅读
- fortran - 'DIMENSION' 类型与 fortran 中的'假定大小数组'
- laravel - 将文件附加到公用文件夹中的电子邮件
- javascript - 虽然这是重复的问题,但我如何在第一行显示新行我正在使用 angular9
- javascript - 为什么ajax数据传输后PHP代码没有运行?
- xml - 使用 XML 和 XSLT for-each 语句连接字段
- asp.net-mvc - 导航栏上的下拉菜单未正确设置用户名
- python - 为什么在子类化 tf.keras 层(或模型)类时实现“调用”方法会使层(模型)对象可调用?
- django - 获取仅链接到特定 slug 的 QuerySet
- r - knitr 在新页面上打印每个表格的 data.frames 列表
- wordpress - 为什么我在 get_user_by('login', $login) 函数中得到空白 user_activation_key?