我无法找到想做我想要的想法
所以我决定在这里问我的问题:)
我希望使用preg_match_all
从文本中选择一些组(itemgroup (index 24813) (group (200 24813)))
(itemgroup (index 2481) (group (50 2461)(100 2471)(150 2491)))
我希望输出就像那样
index 24813 => 24813
index 2481 => 2461 / 2471 / 2491
有任何想法如何使用preg_match_all
谢谢
答案 0 :(得分:0)
尝试使用此代码:
<?php
$string = '
(itemgroup (index 24813) (group (200 24813)))
(itemgroup (index 2481) (group (50 2461)(100 2471)(150 2491)))
';
preg_match_all('#\(itemgroup \(index ([0-9]+)\) \(group ([0-9()\s]+)\)\n*#', $string, $match);
$index = $match[1];
$groups = $match[2];
for ($i = 0; $i < count($index); ++$i) {
preg_match_all('#\([0-9]+ ([0-9]+)\)#', $groups[$i], $group);
$group = implode(' / ', $group[1]);
echo 'index ' . $index[$i] . ' => ' . $group . "\n";
}
答案 1 :(得分:0)
如果此
中有3个数字,我现在正尝试从中间的Arcs中选择数字弧线,最后一个弧线中有2个数字
例如(100 24715)输出应为:24715
(150 2491 58)输出应为:2491
我试过
<?php
$string = '((50 24610 0)(100 24715)(150 2491 58))';
preg_match_all('/\s*\(\s*[0-9]+\s*?([0-9]\d+)+\s*?[0-9]+\s*\)/',
$string, $matches);
$matches = implode(' & ', $matches[1]);
echo $matches . "<br>";
?>
输出
24610 & 2471 & 2491
输出应该是
24610 & 24715 & 2491
我不知道为什么它不会在中间数字显示数字5