获取字符串中的字符串-php

获取字符串中的字符串-php,php,regex,string,numbers,Php,Regex,String,Numbers,我有一个字符串: [gallery ids="2282,2301,2302,2304,2283,2303,2285,459,1263,469,471,1262,1261,472,608,467,607,606,466,460"] id的id会有所不同,但是(在PHP中)如何获取值呢 regexp不是我的强项,但我想我们可以检查直接位于单词ids?Regex:preg\u match\u all(/\d+/,$string,$matches)后面的引号中的所有内容 此处演示说明:如果您想要非正则

我有一个字符串:

[gallery ids="2282,2301,2302,2304,2283,2303,2285,459,1263,469,471,1262,1261,472,608,467,607,606,466,460"]
id的
id
会有所不同,但是(在PHP中)如何获取值呢


regexp不是我的强项,但我想我们可以检查直接位于单词
ids

Regex:
preg\u match\u all(/\d+/,$string,$matches)后面的引号中的所有内容


此处演示说明:

如果您想要非正则表达式解决方案,可以执行以下操作:

$str = ...;

$start = strpos($str, '"') + 1; // find opening quotation mark
$end = strpos($str, '"', $start); // find closing   ''     ''

$ids = explode(",", substr($str, $start, $end - $start));

我认为一个更简单的解决方案,而不是使用
preg\u match
,是使用
作为分隔符,简单地
分解字符串,其中id将是第二个元素(索引
1

从添加了函数数组解引用的PHP 5.4来看,这可能非常优雅:

$string = '[gallery ids="2282,2301,2302,2304,2283,2303,2285,459,1263,469,471,1262,1261,472,608,467,607,606,466,460"]';

$ids = explode(',', explode('"', $string)[1]);

preg\u match
相比,它的好处在于,值是什么并不重要,它们可以是数字、字母或其他符号。

不如将
strpos
+
substr
替换为stpros好吗?答案不错,但preg\u match可以匹配任何东西。对于这个简单的任务来说,这可能是一种过分的做法。没错,但您需要知道模式用于值。使用
explode
则不需要,因此它更具可扩展性。
$string = '[gallery ids="2282,2301,2302,2304,2283,2303,2285,459,1263,469,471,1262,1261,472,608,467,607,606,466,460"]';

$ids = explode(',', explode('"', $string)[1]);