使用preg_match_all从文本中选择数字

时间:2012-10-24 17:04:57

标签: php preg-match-all

我无法找到想做我想要的想法

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

我希望使用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

谢谢

2 个答案:

答案 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