Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP从正则表达式获取数组_Php_Regex - Fatal编程技术网

PHP从正则表达式获取数组

PHP从正则表达式获取数组,php,regex,Php,Regex,我有一根像绳子一样的绳子 $content = "Some content some content [images ids="10,11,20,30,40"] Some content"; 我想从中删除[images ids=“10,11,20,30,40”]部分,并将ids部分作为php数组(10,11,20,30,40) 用正则表达式可以吗 假设这是内容的结构,并且不会变得更复杂,那么: preg_match_all('/(\d+)/', $content, $matches); pri

我有一根像绳子一样的绳子

$content = "Some content some content
[images ids="10,11,20,30,40"]
Some content";
我想从中删除
[images ids=“10,11,20,30,40”]
部分,并将ids部分作为php
数组(10,11,20,30,40)


用正则表达式可以吗

假设这是内容的结构,并且不会变得更复杂,那么:

preg_match_all('/(\d+)/', $content, $matches);
print_r($matches[0]);

如果内容更复杂,则需要添加更多内容以缩小范围。

假设内容的结构是这样的,并且不会变得更复杂,那么:

preg_match_all('/(\d+)/', $content, $matches);
print_r($matches[0]);
如果更复杂,则需要添加更多内容以缩小范围。

您可以使用以下方法:

$txt = <<<LOD
Some content some content
[images ids="10,11,20,30,40"]
Some content
LOD;

$result = array();

$txt = preg_replace_callback('~(?:\[images ids="|\G(?<!^))([0-9]+)(?:,|"])~',
    function ($m) use (&$result) { $result[] = $m[1]; }, $txt);

echo $txt . '<br>' . print_r($result, true);
您可以使用以下选项:

$txt = <<<LOD
Some content some content
[images ids="10,11,20,30,40"]
Some content
LOD;

$result = array();

$txt = preg_replace_callback('~(?:\[images ids="|\G(?<!^))([0-9]+)(?:,|"])~',
    function ($m) use (&$result) { $result[] = $m[1]; }, $txt);

echo $txt . '<br>' . print_r($result, true);

你试过什么吗?请编写代码。我已经用字符串替换,然后用逗号分解数组,但我认为这不是一个好的解决方案。@Kluska000如果你知道字符串的格式,那么你所做的对我来说听起来是个好主意。是的,这是任何人都会做的……你可能无法用一个preg函数同时做这两件事。你试过什么吗?请编写代码。我已经用字符串替换,然后用逗号分解数组,但我认为这不是一个好的解决方案。@Kluska000如果你知道字符串的格式,那么你所做的对我来说听起来是个好主意。是的,这是任何人都会做的……你可能不能用一个preg函数同时做这两件事。@anubhava:谢谢anubhava!
\G
功能就像一块魔法石,你搜索了很长时间,但它非常强大。是的,我在你以前的一个答案中了解到了
\G
。谢谢@阿努巴瓦:谢谢阿努巴瓦!
\G
功能就像一块魔法石,你搜索了很长时间,但它非常强大。是的,我在你以前的一个答案中了解到了
\G
。谢谢