获取字符串中的字符串-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]);