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
。谢谢