-3

我找不到做我想做的事的想法

所以我决定在这里问我的问题:)

我想用 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

谢谢你

4

2 回答 2

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";
}
于 2012-10-24T17:20:50.557 回答
0

如果其中有 3 个数字,我现在正在尝试从中间的 Arcs 中选择数字

arcs 和 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

于 2012-10-24T21:06:33.363 回答