-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つの数字がある場合、私は今アークから数字を選択しようとしています

弧と最後の1つは弧に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 に答える